请求跨域设置同时允许cookie跨域(携带cookie)
最近做一个前后端分离的项目,后台.Net 进行开发,使用session来进行身份验证。发现调用接口的时候总是显示未登录,经过检查发现每次请求过去的sessionid是不一样的,导致服务器找不到之前登陆时候的session从而获取不到数据。
查了下资料了解到浏览器不允许cookie跨域传递,导致登陆请求写入cookie的sessionid 在下一个请求发起的时候并不能带出来发送给服务器,从而导致每次的session都是不同的session导致后台的身份验证没有作用。
解决过程: 查阅资料发现同时设置 允许跨域Access-Control-Allow-Origin:"*" 允许cookie跨域"Access-Control-Allow-Credentials", "true" 前端设置 withCredentials: true 前端代码
let options = new RequestOptions({ headers: new Headers({ 'Content-Type': 'application/json' }),withCredentials: true });复制代码
设置完成之后发现依然报错查阅发现 Access-Control-Allow-Origin:"" 和 Access-Control-Allow-Credentials", "true" 同时设置的时候Access-Control-Allow-Origin不能设置为"",只能设置为具体的域名,所以后面这样设置
System.Web.HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin", System.Web.HttpContext.Current.Request.UrlReferrer.Scheme + "://" + System.Web.HttpContext.Current.Request.UrlReferrer.Authority);
复制代码
一个取巧的方式去获取域名设置。 再次测试发现依然报错 查看报错信息 XMLHttpRequest cannot load http://localhost:28694/WeChatApp/GetAppSession?encryptparam=hxTdRDipfsBUemx…jiQmA7TiulXaXjZSCdl5X2L5bGlBxFQPUelfcBPLzVr7ZWV5CtA%3D%3D&headver=1.71.1.1. Credentials flag is 'true', but the 'Access-Control-Allow-Credentials' header is 'true, true'. It must be 'true' to allow credentials. Origin 'http://localhost:8081' is therefore not allowed access. vendor.d892748….bundle.js:197 ERROR e {_body: ProgressEvent, status: 0, ok: false, statusText: "", headers: t…} 中出现了'true,true'再加上之前 [图片上传失败...(image-8f7981-1511316910517)] 推测这里设置的 "Access-Control-Allow-Credentials", "true"被重复设置了应该是哪里已经设置过了,故而注释掉 最后C#代码
System.Web.HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin", System.Web.HttpContext.Current.Request.UrlReferrer.Scheme + "://" + System.Web.HttpContext.Current.Request.UrlReferrer.Authority);
// System.Web.HttpContext.Current.Response.AddHeader("Access-Control-Allow-Credentials", "true");
复制代码
测试通过解决
转载于:https://juejin.im/post/5c37105a51882525ec200ef8
请求跨域设置同时允许cookie跨域(携带cookie)相关推荐
- chrome浏览器的跨域设置,前端修改跨域问题
原文:https://www.cnblogs.com/laden666666/p/5544572.html 做前后分离的webapp开发的时候,出于一些原因往往需要将浏览器设置成支持跨域的模式,好在c ...
- Chrome 跨域 请求不携带cookie
一个月没动的项目,今天突然需要优化一个功能,项目启动,美滋滋的 localhost:8082访问前端页面,登录成功, 访问数据页面,报未登录 一脸懵逼,一个月前好好的项目,突然就出问题了,查看下请求发 ...
- Cookie跨域存储问题
同源策略 同源策略限制了当前页面的请求只能在当前域下访问,只要协议.ip.端口有一个不一样,就会触发同源策略,例如当前域是http://192.168.1.73:8080,而请求的域是http://1 ...
- 浅谈cookie跨域的解决方案(domain)
sso单点登录跨域cookie共享 首先了解cookie的两个属性 domain-域 通过设置这个属性可以使多个web服务器共享cookie.domain属性的默认值是创建cookie的服务器的主机名 ...
- 使用 SetParent 跨进程设置父子窗口时的一些问题(小心卡死)
在微软的官方文档中,说 SetParent 可以在进程内设置,也可以跨进程设置.当使用跨进程设置窗口的父子关系时,你需要注意本文提到的一些问题,避免踩坑. 本文内容 跨进程设置 `SetParent` ...
- python 打开网页获取cookies_python 携带cookie获取页面内容
有时会遇到爬取的页面需要登录,这就要带上cookie了. 下面记录了几种携带cookie的方法 # coding=utf-8 import requests s = requests.Session( ...
- vue前后端分离项目http请求携带cookie设置,java过滤器filter设置允许跨域
最近使用VUE开发前后端分离,登录后,后端存入用户信息到session,前端http axios异步请求获取不到sesion,查看http请求头发现http headers未携带cookie, 然后查 ...
- 前端cookie 放到请求头_ajax请求携带cookie和自定义请求头header(跨域和同域)
错误: 1.ajax请求时是不会自动带上cookie的,要是想让他带上的话,必须设置withCredential为true. 正确: 1.ajax同域请求下,ajax会自动带上同源的cookie: 2 ...
- SSO单点登录、跨域重定向、跨域设置Cookie、京东单点登录实例分析
最近在研究SSO单点登录技术,其中有一种就是通过js的跨域设置cookie来达到单点登录目的的,下面就已京东商城为例来解释下跨域设置cookie的过程 涉及的关键知识点: 1.jQuery ajax跨 ...
最新文章
- 总结 一下UML 类图的关系
- 浅谈C++设计模式之工厂方法(Factory Method)
- 信息学奥赛C++语言:切蛋糕
- MVC中Controller弹出提示框
- 使用vue-print-nb插件页面空白以及打印没有样式问题
- 祝贺吾博文中第一篇点击超过一万的文章出现
- JavaWeb之HttpSession
- 《仙剑奇侠传六》游戏感言
- 蓝桥杯算法竞赛培训(二) 汉诺塔与STL
- java 正则拼音_正则匹配拼音
- 什么是邮箱地址,电子邮箱地址大全 163vip邮箱都有哪些地址?
- 微信小程序开发之小米商城
- 工作室多拨宽带如何优化?
- 爬取B站20万+条弹幕,我学会了如何成为B站老司机
- 数据库的锁机制理解和运用
- 小学计算机教师教育教学故事,小学教师教育叙事故事
- Vue调用后台接口渲染列表
- DSP28335移植ucosii
- 谷歌seo独立站搜索引擎优化指南【2023新版】
- OpenCV高斯滤波GaussianBlur