最近做一个前后端分离的项目,后台.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)相关推荐

  1. chrome浏览器的跨域设置,前端修改跨域问题

    原文:https://www.cnblogs.com/laden666666/p/5544572.html 做前后分离的webapp开发的时候,出于一些原因往往需要将浏览器设置成支持跨域的模式,好在c ...

  2. Chrome 跨域 请求不携带cookie

    一个月没动的项目,今天突然需要优化一个功能,项目启动,美滋滋的 localhost:8082访问前端页面,登录成功, 访问数据页面,报未登录 一脸懵逼,一个月前好好的项目,突然就出问题了,查看下请求发 ...

  3. Cookie跨域存储问题

    同源策略 同源策略限制了当前页面的请求只能在当前域下访问,只要协议.ip.端口有一个不一样,就会触发同源策略,例如当前域是http://192.168.1.73:8080,而请求的域是http://1 ...

  4. 浅谈cookie跨域的解决方案(domain)

    sso单点登录跨域cookie共享 首先了解cookie的两个属性 domain-域 通过设置这个属性可以使多个web服务器共享cookie.domain属性的默认值是创建cookie的服务器的主机名 ...

  5. 使用 SetParent 跨进程设置父子窗口时的一些问题(小心卡死)

    在微软的官方文档中,说 SetParent 可以在进程内设置,也可以跨进程设置.当使用跨进程设置窗口的父子关系时,你需要注意本文提到的一些问题,避免踩坑. 本文内容 跨进程设置 `SetParent` ...

  6. python 打开网页获取cookies_python 携带cookie获取页面内容

    有时会遇到爬取的页面需要登录,这就要带上cookie了. 下面记录了几种携带cookie的方法 # coding=utf-8 import requests s = requests.Session( ...

  7. vue前后端分离项目http请求携带cookie设置,java过滤器filter设置允许跨域

    最近使用VUE开发前后端分离,登录后,后端存入用户信息到session,前端http axios异步请求获取不到sesion,查看http请求头发现http headers未携带cookie, 然后查 ...

  8. 前端cookie 放到请求头_ajax请求携带cookie和自定义请求头header(跨域和同域)

    错误: 1.ajax请求时是不会自动带上cookie的,要是想让他带上的话,必须设置withCredential为true. 正确: 1.ajax同域请求下,ajax会自动带上同源的cookie: 2 ...

  9. SSO单点登录、跨域重定向、跨域设置Cookie、京东单点登录实例分析

    最近在研究SSO单点登录技术,其中有一种就是通过js的跨域设置cookie来达到单点登录目的的,下面就已京东商城为例来解释下跨域设置cookie的过程 涉及的关键知识点: 1.jQuery ajax跨 ...

最新文章

  1. 总结 一下UML 类图的关系
  2. 浅谈C++设计模式之工厂方法(Factory Method)
  3. 信息学奥赛C++语言:切蛋糕
  4. MVC中Controller弹出提示框
  5. 使用vue-print-nb插件页面空白以及打印没有样式问题
  6. 祝贺吾博文中第一篇点击超过一万的文章出现
  7. JavaWeb之HttpSession
  8. 《仙剑奇侠传六》游戏感言
  9. 蓝桥杯算法竞赛培训(二) 汉诺塔与STL
  10. java 正则拼音_正则匹配拼音
  11. 什么是邮箱地址,电子邮箱地址大全 163vip邮箱都有哪些地址?
  12. 微信小程序开发之小米商城
  13. 工作室多拨宽带如何优化?
  14. 爬取B站20万+条弹幕,我学会了如何成为B站老司机
  15. 数据库的锁机制理解和运用
  16. 小学计算机教师教育教学故事,小学教师教育叙事故事
  17. Vue调用后台接口渲染列表
  18. DSP28335移植ucosii
  19. 谷歌seo独立站搜索引擎优化指南【2023新版】
  20. OpenCV高斯滤波GaussianBlur

热门文章

  1. 断点恢复执行时的设置
  2. 2022Q3消费级AR眼镜市场季度分析:国产品牌纷纷发力,市场全面启航
  3. windowxp网络无法发现其他计算机,几个步骤轻松解决win7无法访问XP系统共享问题...
  4. 面试官筛选简历,注重以下几点
  5. 如何清除PDF中的水印?PDF删除水印的方法
  6. 人工智能 2.知识表示
  7. 安卓实现下拉刷新上拉加载
  8. Linux TCP之sack(一)
  9. $(dirname $0)
  10. Python基于人脸识别的考勤系统(附源码)