我刚开始使用fetch
API按照ReactJS的建议发送我的数据。在此之前,要将API请求发送到我使用AngularJS的服务器。我目前遇到最烦人的错误,发送HTTP请求无法加载正确的会话。SessionID随每个HTTP请求而变化
首先,我的Web应用程序使用PHP API来公开自己,并且(现在基本上是)现在的一堆.php
文件来获取应用程序的某些部分。其中之一是authenticateUser.php
,它认证并存储会话。然而,我注意到我的HTTP请求fetch
没有像预期的那样工作,getCurrentUser.php
等其他内容返回NotLoggedIn
,尽管只是验证。我认为它可能有一些做的会议,等等authenticateUser.php
,我把我的.php
文件输出的电流通过session_id
验证后:(echo array('session_id' => session_id());
我注意到,基本上,当我自己加载自己的网址在浏览器中:myapp.com/php/http/user/authenticateUser.php
,用fetch
当session_id
我得到的是一个我得到完全不同的:
return fetch("/php/http/user/authenticateUser.php", {
method: "post",
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
}
}).then(function(successResponse) {
return successResponse.json();
}, function(errorResponse) {
console.log(errorResponse);
}).then(function(data) {
console.log(data);
});
我进一步检查,也许认为这是因为fetch
被查询http
版本我的网站,而不是非-HTTP版本的我的网站。所以我改变了authenticateUser.php
的逻辑,这样如果它检测到一个会话存在,它会打印出session_id
,否则它会创建并打印出新的会话。每次我发送我的HTTP请求fetch
我得到了不同的session_id
,这意味着我的session_id
随着每个请求而改变。这里是我使用的代码:
header("Content-Type: application/json");
if (session_status() == PHP_SESSION_NONE) {
session_start();
}
http_response_code(200);
echo json_encode(array('session_id' => session_id()),JSON_PRETTY_PRINT);
我是否错过了与fetch
API或头部完全不同的东西?或者有没有人有这方面的经验可能会启发我?