IIS托管c#后端代码快速简单解决浏览器请求CORS跨域问题
·
背景:目前自己建了一个c#的wcf后端服务,并在IIS应用托管了网站,在其他域名地址或本地不同端口的网站去请求这个wcf后端接口,浏览器会出现CORS跨域问题,会被拦截。然后呢,自己在网上找快速的解决方案,都是特别复杂,而且不一定有效,于是有了这一篇文章,如果对你有所帮助,麻烦点个赞,蟹蟹!
思路:先解决IIS拦截问题→c#wcf中的web.config配置问题→问题解决
解决IIS拦截问题
由于浏览器的同源策略,浏览器请求跨域外部接口时会预先发送option预检请求,所以要解决IIS是否提前拦截了,IIS中需要找到两个地方删除,预检信息直接由wcf后端服务去解决
1、选中站点 → 模块 → 找到 WebDAVModule → 移除

2、选中站点 → 处理程序映射 → 找到 OPTIONSVerbHandler → 移除

c#wcf中的web.config配置问题
c#后端代码的web.config配置如下
主要增加以下片段代码,记得是在system.webServer添加
<httpProtocol>
<customHeaders>
<!-- 允许跨域域名,* 代表所有,生产建议指定前端地址 -->
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Methods" value="GET,POST,OPTIONS" />
<add name="Access-Control-Allow-Headers" value="Content-Type,Authorization,Accept" />
<add name="Access-Control-Max-Age" value="86400" />
</customHeaders>
</httpProtocol>
<!-- 拦截 OPTIONS 请求直接返回 200 -->
<handlers>
<remove name="OPTIONSVerbHandler" />
<add name="OPTIONSVerbHandler" path="*" verb="OPTIONS" modules="ProtocolSupportModule" resourceType="Unspecified" />
</handlers>
然后就基本可以了
更多推荐



所有评论(0)