Fetch Api无法从PHP服务器获取会话
Fetch Api unable to get Session from PHP server
我在应用程序中使用Fetch Api。
我有一个PHP服务器页面来获取之前已经定义的会话数据。看起来是这样的:
<?php
header('Content-Type: application/json; charset=UTF-8');
header('Access-Control-Allow-Origin: *');
session_start();
// $_SESSION['data'] already defined before
$result = array();
// print_r($_SESSION['data']);
if (isset($_SESSION['data'])) {
$result = $_SESSION['data'];
$result['code'] = 'ok';
} else {
$result['code'] = 'error';
}
echo json_encode($result, JSON_UNESCAPED_UNICODE|JSON_UNESCAPED_SLASHES);
我还得到了另一个html页面来获取会话数据。看起来是这样的:
<script>
$(function() {
// use $.ajax
$.ajax({
url: 'session.php',
dataType: 'json'
})
.done(function(res) {
console.log(res);
});
// end
// use fetch
fetch('session.php').then(function(res) {
if (res.ok) {
res.json().then(function(obj) {
console.log(obj);
});
}
});
// end
});
</script>
问题是,当我使用$.ajax()时,会话数据可以正确显示。但是当我使用fetch()时,会话数据是未定义的。
那么,出了什么问题,我该如何解决?谢谢
如果希望fetch
发送cookie,则必须提供credentials
选项。
请参阅https://developer.mozilla.org/en-US/docs/Web/API/GlobalFetch/fetch#Parameters详细信息。
jquery ajax是一个常见的ajax请求,浏览器会发送cookie头,其中包含标识会话的会话id。
fetch没有-而是创建了一个没有任何数据的新会话使用url或头发送php会话id
看看:http://php.net/manual/en/session.idpassing.php
相关文章:
- 从服务器获取数据并在选择控件中使用ng选项无法显示选项
- 事件循环的MEAN.JS setInterval进程(从另一个服务器获取数据)
- 使用ReactJS和Flux架构从服务器获取数据的正确方法是什么
- 我在哪里从 React Redux 应用程序中的服务器获取初始数据
- 从服务器获取并传递给浏览器以在 Javascript 中格式化的日期时间格式
- Fetch Api无法从PHP服务器获取会话
- 如何从Python服务器获取到Javascript客户端
- jQueryUI FullCalendar:从服务器获取事件后的回调
- 从服务器获取数据,并使用$http服务和ng-change在select事件上显示它
- 无法从服务器获取json数据
- 将从服务器获取的数据加载到输入文本表单中
- javascript如何从服务器获取文件夹中文件的url
- 如何从外部服务器获取JSON
- angularjs设计模式和从服务器获取数据的最佳实践
- 使用Jquery和Ajax从服务器获取值的跨域Ajax请求
- 如何在从服务器获取数据的动态表的每一行中添加下拉列表
- 使用Angular从服务器获取数据
- 使用AngularJS从服务器获取计算结果
- AngularJS web客户端可以't从Scala Play服务器获取资源
- 在我的谷歌自定义搜索引擎从服务器获取数据后,我如何激发一些javascript代码