码迷,mamicode.com
首页 > 其他好文 > 详细

【问题记录】 坑爹的跨域问题

时间:2019-12-17 18:47:44      阅读:97      评论:0      收藏:0      [点我收藏+]

标签:res   The   must   技术   结果   处理   with   遇到的问题   webserver   

关于跨域问题 ,是一个老生常谈的问题了。网上也存在一大片的解决方案。在此本人只是记录一下在项目中遇到的跨域问题的处理方法。

首先项目中遇到的问题:

  初始:以为就是一个简单的跨域问题,在web.config中加一个配置或者用Cors就行了。

web.config 加配置:在<system.webServer>节点加一下配置

技术图片

 

 

 

或者代码中加Cors

 技术图片

以上两种解决方法按理来说就能解决跨域的问提。但是在这次项目中就不行。

调用接口报错了。敢信!

报错:The value of the ‘Access-Control-Allow-Origin‘ header in the response must not be the wildcard ‘*‘ when the request‘s credentials mode is ‘include‘.

后来继续研究了一下,是因为客户端调用接口设置了 请求携带了验证身份信息,就是说调用接口时传了Cookie信息。按之间的在web.config加配置或在代码中加Cors是行不通的。

 

可以理解为这是一条http协议或者CORS的规则。

就是当request中设置了withCredentials : true,也就是请求携带了验证身份信息时,

response的Access-Control-Allow-Origin : *,(而是应该有请求身份过滤)

否则的话,请求会失败。

 

发现问题所在,就简单了。

这个时候首先想到的解决方案就是不传Cookie,换成JWT 用Token 验证。单考虑到项目已经在运行中了。抛弃

另外一个解决方案就是继续像web.config中加配置

技术图片

 

 

 改成这样,客户端调用接口成功。

 

其中调用接口回访问两次,一次是Method 为OPTIONS,

可以配置"Access-Control-Max-Age",表明在86400秒内,不需要再发送预检验请求,可以缓存该结果

可以扩展一个Module 去拦截Method 为OPTIONS的请求直接返回

代码:

技术图片

 

 需在web.config中配置module

技术图片

 

 

结束。

记第一次写博客。

搓的一匹。

见谅。

【问题记录】 坑爹的跨域问题

标签:res   The   must   技术   结果   处理   with   遇到的问题   webserver   

原文地址:https://www.cnblogs.com/SnowXia/p/12055811.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!