龙行博客

走路看风景,经历看人生,岁月留痕迹,人生留轨迹,17的历史,18的豪情,时间的匆忙,人生的风景,放开心胸往前走,成功再远行,放开理想往前走,梦想再行动。
现在位置:首页 > 编程语言 > PHP > php前后端分离项目跨域问题

php前后端分离项目跨域问题

龙行    PHP    2020-1-17    1068    2评论    

重点 后台用的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');


评论一下 分享本文 赞助站长

赞助站长X

扫码赞助站长
联系站长
龙行博客
  • 版权申明:此文如未标注转载均为本站原创,自由转载请表明出处《龙行博客》。
  • 本文网址:https://www.liaotaoo.cn/324.html
  • 上篇文章:教程
  • 下篇文章:thinkphp6 excel数据导入数据库
  • php php7 tp6 thinkphp6
萧瑟
萧瑟2020-03-10 22:17回复
#2
总结的不错。不过我记得ajax请求好像可以传递header数据。
今日新闻
今日新闻2020-02-22 23:22回复
#1
文章不错非常喜欢
快捷导航
联系博主
在线壁纸
给我留言
四四五五
音乐欣赏
返回顶部