专栏首页星辰日记关于Ajax请求携带Cookie访问失效的解决方案

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

问题描述

  在使用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的全局属性

$.ajaxSetup({xhrFields: { //全局设置AJAX携带COOKIE
    withCredentials: true
}});

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 商城项目-跨域问题

    而我们刚才是从manage.leyou.com去访问api.leyou.com,这属于二级域名不同,跨域了。

    cwl_java
  • 程序员应对浏览器同源策略的姿势

    浏览器最基本的安全规范——同源策略(Same-Origin Policy)。所谓同源是指域名、协议、端口相同。不同源的浏览器脚本(javascript、Acti...

    小码甲
  • 跨域请求传递Cookie问题

    前后端完全分离的项目,前端使用Vue + axios,后端使用SpringMVC,容器为Tomcat。 使用CORS协议解决跨域访问数据限制的问题,但是发现客...

    编程随笔
  • SpringBoot应用跨域访问解决方案

    说到跨域访问,必须先解释一个名词:同源策略。所谓同源策略就是在浏览器端出于安全考量,向服务端发起请求必须满足:协议相同、Host(ip)相同、端口相同的条件,否...

    字母哥博客
  • 跨域问题及CORS解决跨域问题方法

    跨域不一定会有跨域问题。因为跨域问题是浏览器对于ajax请求的一种安全限制:一个页面发起的ajax请求,只能是于当前页同域名的路径,这能有效的阻止跨站攻击。

    Java架构师必看
  • Ajax请求携带Cookie

    先来了解下xhr xhr,全称为XMLHttpRequest,用于与服务器交互数据,是ajax功能实现所依赖的对象,jquery中的ajax就是对 xhr的封...

    陈灬大灬海
  • 全面分析前端的网络请求方式

    这种交互的的缺陷是显而易见的,任何和服务器的交互都需要刷新页面,用户体验非常差, Ajax的出现解决了这个问题。 Ajax全称 AsynchronousJava...

    ConardLi
  • 全面分析前端的网络请求方式

    这种交互的的缺陷是显而易见的,任何和服务器的交互都需要刷新页面,用户体验非常差,Ajax的出现解决了这个问题。Ajax全称Asynchronous JavaSc...

    Fundebug
  • AJAX 三连问,你能顶住么?

    本文包含的内容较多,包括AJAX,CORS,XSS,CSRF等内容,要完整的看完并理解需要付出一定的时间。

    Java技术栈
  • Cook Cookie, 我把 SameSite 给你炖烂了

    SameSite cookie 推出已一年有余,自己看了不少文章,也撞了不少南墙,所以还是那句好记性不如烂笔头。你可能觉得自己懂了,但试着讲出来,才能知道自己是...

    秋风的笔记
  • 前端小积累

    一周周实习,很少时间写博客了,但本周的实习中,遇到了一些问题,可以说是争长了阅历,所以一定要好好记下来。 遇到的问题主要是关于跨域和css3的;

    用户1394570
  • 你不知道的CORS跨域资源共享

    keyWords
  • 跨域无法设置cookie的问题

    我想实现的功能就是:在登录页面输值进行登录之后可以把用户的信息存入到cookie中,判断用户是否在登录状态。

    帅的一麻皮
  • sso系统使用

    用户2146856
  • sso系统使用

    用户2146856
  • 前后端分离下如何登录

    目前大多数Web应用采用前后端分离方式进行开发。所以前端网站或应用都属于SPA(Single Page Application)。如果前端,后台API部署在同域...

    八哥
  • 快速上手Token登录认证

    由于HTTP是一种无状态的协议,服务器单从网络连接上无从知道客户身份。怎么办呢?就给客户端们颁发一个通行证吧,每人一个,无论谁访问都必须携带自己通行证。这样服务...

    @超人
  • SpringBoot执行跨域处理

    首先了解一下一个http链接的的组成部分:http://www.huangfu.com:8080/hello.html

    止术
  • 在SpringBoot中处理跨域

    跨域请求会在正式通信之前,增加一次HTTP查询请求,称为"预检"请求(preflight)。

    徂暑

扫码关注云+社区

领取腾讯云代金券