前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >关于Ajax请求携带Cookie访问失效的解决方案

关于Ajax请求携带Cookie访问失效的解决方案

作者头像
xcsoft
发布2021-07-14 16:50:41
1.2K0
发布2021-07-14 16:50:41
举报
文章被收录于专栏:星辰日记

问题描述

  在使用ajax请求其他平台时进行登录处理,cookie携带时失效。(使用PHP与Jquery作为演示)   例如,当我的域名 www.example.com 调用Ajax访问 api.exmaple.com时进行登录操作,这个时候api.example.con的响应中肯定会有一条类似为Set-Cookie: PHPSESSID=6ut2plej880p83ja9f76doue1i; path=/ 但是当页面刷新后,重新去访问api.example.com时你会发现这个session已经失效了。

问题原因

  由于一般的现代浏览器均遵从跨域请求规范,即Access-Control-Allow-OriginAccess-Control-Allow-Credentials。前者的作用为,允许指定域名跨域请求,后者作用为是否允许请求时携带验证信息(即Cookie等其他信息)

具体可参考 https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/Access-Control-Allow-Origin https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/Access-Control-Allow-Credentials

解决方案

  对于服务端需要添加两个header(Access-Control-Allow-Origin与Access-Control-Allow-Credentials),同时注意Access-Control-Allow-Origin必须指定单个域名,不能为通配符*,Access-Control-Allow-Credentials为true。   对于Ajax请求端,可以直接设置ajax的全局属性

代码语言:javascript
复制
$.ajaxSetup({xhrFields: { //全局设置AJAX携带COOKIE
    withCredentials: true
}});
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 问题描述
  • 问题原因
  • 解决方案
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档