php前后端分离项目跨域问题
重点 后台用的session保存数据(项目非常非常小)
遇到一个问题,前端调用登录api,访问其它api获取不到session的值,null
ajax请求无法获取header、cookie等信息。但是后来发现有更方便的解决方法。jquery的ajax请求中可以设置下面两个参数,浏览器会自动帮你保存、发送这些header信息
xhrFields: { withCredentials: true }, crossDomain: true,
实例
$.ajax({ url: "url", //请求的url地址 dataType: "json", //返回格式类型为json 可选参数(jsonp,html,xml,text,script,json xhrFields: { withCredentials: true },//需要设置的参数 crossDomain: true,//需要设置的参数 async: true, //请求是否异步,默认为true:异步,这也是ajax重要特性 可不写该参数 type: "post", //请求方式类型(put,delete,post,get) data: { }, beforeSend: function() { //请求前的处理操作 }, success: function(data,textStatus) { //此处data为返回值 //请求成功时处理操作 }, complete: function() { //请求完成的处理操作 }, error: function() { //请求出错处理操作 } });
后端则需要设置请求头
$origin = isset($_SERVER['HTTP_ORIGIN'])? $_SERVER['HTTP_ORIGIN'] : ''; // 允许所有跨域请求,测试用,生产环境请使用具体域名代替 header('Access-Control-Allow-Origin:'.$origin); header('Access-Control-Allow-Credentials:true');
- 版权申明:此文如未标注转载均为本站原创,自由转载请表明出处《龙行博客》。
- 本文网址:https://www.liaotaoo.cn/324.html
- 上篇文章:教程
- 下篇文章:thinkphp6 excel数据导入数据库

萧瑟2020-03-10 22:17回复
#2
总结的不错。不过我记得ajax请求好像可以传递header数据。

今日新闻2020-02-22 23:22回复
#1
文章不错非常喜欢