TP5+Vue跨域请求session(浏览器对第三方cookie的限制问题)

vue跨域请求后台数据

vue引入axios后,在main.js中添加此代码,因为axios默认不开启withCredentials

axios.defaults.withCredentials = true; //让ajax携带cookie

tp5在入口文件index.html中添加以下header头

header("Access-Control-Allow-Credentials:true");//表示是否允许发送Cookie*/

header('Access-Control-Allow-Origin:http://localhost:8088');//允许http://localhost:8088的来源访问

header("Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept");

header('Access-Control-Allow-Methods: GET, POST, PUT,DELETE,OPTIONS');

header("Content-type: text/json; charset=utf-8");

一般情况下是能否解决vue跨域请求tp5后台数据时session id不一致的问题,若出现请求跨域成功,但返回的数据显示session还为null时,可以继续往下看

谷歌浏览器对第三方cookie的限制

一般做开发我都是首选谷歌作为开发用浏览器,所以在请求跨域成功后,返回的数据显示session还为null时,折腾了我好久,这时我注意到控制台提示的信息A cookie associated with a cross-site resource at was set without the SameSite attribute. A future release of Chrome will only deliver cookies with cross-site requests if they are set with SameSite=None and Secure时才发现是浏览器的问题。

Chrome 51 开始,浏览器的 Cookie 新增加了一个SameSite属性,用来防止 CSRF 攻击和用户追踪。也就是谷歌浏览器对第三方cookie进行了限制,想要更深入了解可以点击下面的链接

阮一峰:Cookie 的 SameSite 属性

官方文档:拒绝不安全的SameSite =无cookie

官方文档:Cookies默认为SameSite = Lax

现在了解到的方法是更改谷歌浏览器的首选项

谷歌浏览器搜索chrome://flags/

搜索same-site,将搜索到的设置全部修改成Disabled


完成
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • CORS 一、CORS内部机制与实现 CORS(Cross-Origin Resource Sharing,跨域资...
    fenerchen阅读 766评论 0 0
  • 前端程序使用ExtJS的写,在本地测试,发送请求到服务器时,发现存在跨域的问题,饼干也没有一套成功,于是乎在这里整...
    南滨月亮阅读 1,528评论 0 1
  • 1.同源策略(Same origin Policy) 浏览器出于安全方面的考虑,只允许与本域下的接口交互。不同源的...
    好奇男孩阅读 346评论 0 2
  • 前沿: 最近总听到同事聊跨域得问题,于是自己抽空仔细的查阅了一下关于跨域的知识。说到跨域,就得提到同源,跨域是指一...
    戈弋图阅读 1,851评论 0 4
  • 什么是跨域 跨域,是指浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器对JavaScript实...
    他方l阅读 1,087评论 0 2