跨域cors中如何传递cookie(前端为什么无法向后端传递cookie?)

  • 没有跨域

后端server只要在回应头部‘set-cookie’,那么就会有cookie产生并保存在客户端client。

等到client再次向后端server发送请求时浏览器的机制就会自动携带cookie随着请求一并发送给后端。

  • 跨域

浏览器默认情况下无法主动跨域向后端发送cookie, 如果你要发送cookie给server的话, 就需要将withCredentials设置为true了.

;但是,server并不是随便就能接受并返回新的cookie给你的。 在server端,还需要设置. Access-Control-Allow-Credentials: true

这样server才能返回新的cookie给你. 但是,这还有一个问题,就是cookie还是遵循same-origin policy的。 所以, 你依旧无法使使用它.

最多是访问到它。即使你设置了cors!

所以很多时候你能访问到cookie,即使在客户端做了修改它也不会改变,他的CRUD只能由 server控制.

最后建议:最好不要设置cors,一方面不安全(出于开发时的便捷,你可以使用一些中间件的代理例如proxyTable,帮你实现请求转发达到跨域请求的效果)。

另一方面cookie很多时候都是硬需求,还是老老实实的设置可访问的域,这样才能灵活使用cookie

时间: 2024-10-08 04:37:56

跨域cors中如何传递cookie(前端为什么无法向后端传递cookie?)的相关文章

跨域CORS

一.跨域CORS是什么 当一个资源从与该资源本身所在的服务器的域或端口不同的域或不同的端口请求一个资源时,浏览器会发起一个跨域 HTTP 请求.出于安全考虑,浏览器会限制从脚本内发起的跨域HTTP请求或者拦截了服务器返回内容.例如,XMLHttpRequest 和 Fetch 遵循同源策略.因此,使用 XMLHttpRequest或 Fetch 的Web应用程序只能将HTTP请求发送到其自己的域:这种安全机制是为避免出现类似CSRF 跨站攻击等问题. 二.实现CORS 根据CORS的定义和W3C

zuul+security跨域Cors问题解决

zuul+security跨域Cors问题解决 简介 场景 在服务后台都会出现跨域cors问题,不过一般spring解决起来比较方便,在框架+框架的基础上,问题就显得特别明显了,各种冲突,不了解源码的运行原理,解决起来也是有心无力. 这里介绍的是zuul配置了跨域,在前端调用仍然会出现跨域的问题. 一般没有权限的接口加上cors配置就会通过跨域的问题.不过在服务间调用具有权限的功能,莫名的报跨域问题. post特殊请求 在解决问题时发现 post 请求也有点特殊,这里也需要处理一下. post请

ASP.NET Core Web API 跨域(CORS) Cookie问题

身为一个Web API,处理来自跨域不同源的请求,是一件十分合理的事情. 先上已有的文章,快速复制粘贴,启用CORS: Microsoft:启用 ASP.NET Core 中的跨域请求 (CORS) ASP.NET Core 配置跨域(CORS) 如果按照以上文章,一步一步操作,你会发现,虽然能跨域请求了,但是即使客户端开了(xhr.withCredentials = true)也无法将Cookie发送给API. 关于AllowAnyOrigin 这是因为请求的首部中携带了 Cookie 信息,

关于jsonp跨域过程中 cookie中的值一直为null的原因

今天技术交流群里的小伙伴一直被一个问题而困扰,就是写入cookie里面的值 再次进行请求时 cookie 就为空了 他被问题纠结了一天  我也好奇了一天 终于在快下班的时候 他解决掉了 下面我来收一个渔翁之利 上图啦: 这个是他ajax请求的跨域 这是在ashx一般处理程序中写的读写cookie的操作 这就是问题所在 ,代码没有问题  但是cookie里第二次就是获取不到了捏 最后他给出的解决方案就是 在ashx刚开始的时候 加上 context.Response.AddHeader("P3P&

Web高级 Ajax和跨域CORS

Asynchronous JavaScript and XML 1. XMLHttpRequest 前端开发都知道,不多说. var xhr = new XMLHttpRequest(); xhr.onreadystatechange = function () { if (xhr.readyState !== 4) return; if (xhr.status >= 200 && xhr.status < 300) { console.log(JSON.parse(xhr.r

iframe的跨域高度自适应(通过跨域页面中嵌套本域页面)

实习不久接到一个任务,在网页中嵌套另一个工程的网页.本以为这是轻而易举的一件事情,结果被测试姐姐折腾得够呛.多次和我谈心说到这个高度固定导致iframe出现滚动条有多么不好看,对于工程整体的影响有多么恶劣.因为跨域的原因,这个需求被拖了许久,真是很痛苦的一件事.最终在我离开公司之前搞定了这个单. 这里就把我的研究过程写下来以供大家参考. 首先需要了解一下何为同域,何为跨域: URL 说明 是否允许通信 http://www.a.com/a.jshttp://www.a.com/b.js 同一域名

springboot webapi 支持跨域 CORS

1.创建corsConfig 配置文件 @Configuration public class corsConfig { @Autowired varModel varModel_; @Bean public WebMvcConfigurer corsConfigurer() { return new WebMvcConfigurer() { @Override //重写父类提供的跨域请求处理的接口 public void addCorsMappings(CorsRegistry registr

Ajax跨域CORS

在Ajax2.0中多了CORS允许我们跨域,但是其中有着几种的限制:Origin.Methods.Headers.Credentials 1.Origin 当浏览器用Ajax跨域请求的时候,会带上一个请求头“Origin: 协议://页面域名”,而服务器需要返回一个响应头“Access-Control-Allow-Origin: 协议://对应域名“,如果Origin和Access-Control-Allow-Origin不同,浏览器就会报错,服务器返回的信息也会被浏览器禁止使用 2.Metho

vue开发之跨域请求,请求头not allowed by Access-Control-Allow-Headers,后端cookie session值取不到(二)

原因:你本地的请求ajax的get和post请求:如果你的请求头内放一些可用验证数据Token的时候就会存在跨域请求这是浏览器所不允许的问题: 方案一:后台的接口请求模式都写成jsonp请求,前端去调用: 特点:是一种非正式传输协议,该协议的一个要点就是允许用户传递一个callback 或者开始就定义一个回调方法,参数给服务端,然后服务端返回数据时会将这个callback 参数作为函数名来包裹住JSON数据,这样客户端就可以随意定制自己的函数来自动处理返回数据了. 缺点:它只支持GET请求而不支