.NET应用跨域问题解决方案
一、简介
CORS 全称 Cross-Origin Resource Sharing,是一种允许当前域(domain)的资源(比如 html/js/web service)被其他域(domain)的脚本请求访问的机制,通常由于同域安全策略(the same-origin security policy)浏览器会禁止这种跨域请求。
二、解决方案
解决方案有多种,可以直接给 HttpResponseMessage 添加一个 Access-Control-Allow-Origin header、在 Webconfig 文件中配置、使用 MVC Filter 进行添加 Access-Control-Allow-Origin header 等
注意:如果是 IOS 12 中的 Safari 浏览器,配置为 * 是没有作用的,需要配置为固定的域名 htts://www.xxxxx.com
2.1 HttpResponseMessage
可以在 Action 中可以直接给 HttpResponseMessage 添加一个 Access-Control-Allow-Origin header。代码如下
public HttpResponseMessage GetBookInfo(int id)
{BookDto book = db.Books.Include(b=>b.Author).Where(b=>b.BookId==id).Select(AsBookDto).SingleOrDefault();if (book == null){return Request.CreateErrorResponse(HttpStatusCode.NotFound, "未找到实例");}var response = Request.CreateResponse(book);//有Access-Control-Allow-Origin响应头,浏览器才会把响应给客户端,* 表示允许任何来源的请求response.Headers.Add("Access-Control-Allow-Origin", "*");return response;
}
2.2 Web.config
如果你的平台是 .Net Framework,可以在在 Webconfig文件中配置以下节点,使用配置文件时要先移除后添加,确保起作用。如下
<system.webServer><httpProtocol><!--跨域设置--><customHeaders><remove name="Access-Control-Allow-Origin" /><remove name="Access-Control-Allow-Headers" /><remove name="Access-Control-Allow-Methods" /><add name="Access-Control-Allow-Origin" value="*" /><add name="Access-Control-Allow-Headers" value="*" /><add name="Access-Control-Allow-Methods" value="*" /></customHeaders></httpProtocol>
</system.webServer>
2.3 MVC Filter
添加一个名为 CorsFilter 的过滤器,期主要作用是给 Response 添加 Access-Control-Allow-Origin header,这个过滤器的注册可以使用全局,也可以在 Controller、Action 上。核心代码如下
/// <summary>
/// 跨域
/// </summary>
public class CorsFilter:ActionFilterAttribute
{public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext){base.OnActionExecuted(actionExecutedContext);actionExecutedContext.Response.Headers.Add("Access-Control-Allow-Origin", "*");}
}
.NET应用跨域问题解决方案相关推荐
- 详解SpringBoot应用跨域访问解决方案
详解SpringBoot应用跨域访问解决方案 参考文章: (1)详解SpringBoot应用跨域访问解决方案 (2)https://www.cnblogs.com/zimug/p/11832737.h ...
- PHP下ajax跨域的解决方案之CORS
PHP下ajax跨域的解决方案之CORS 参考文章: (1)PHP下ajax跨域的解决方案之CORS (2)https://www.cnblogs.com/jkko123/p/6294625.html ...
- C#进阶系列——WebApi 跨域问题解决方案:CORS
C#进阶系列--WebApi 跨域问题解决方案:CORS 参考文章: (1)C#进阶系列--WebApi 跨域问题解决方案:CORS (2)https://www.cnblogs.com/landea ...
- JSON Web Token(缩写 JWT) 目前最流行、最常见的跨域认证解决方案,前端后端都需要会使用的东西
JSON Web Token(缩写 JWT)是目前最流行,也是最常见的跨域认证解决方案.无论是咱们后端小伙伴,还是前端小伙伴对都是需要了解. 本文介绍它的原理.使用场景.用法. 关于封面:这个冬天你过 ...
- 跨域学习笔记2--WebApi 跨域问题解决方案:CORS
自己并不懂,在此先记录下来,留待以后学习... 正文 前言:上篇总结了下WebApi的接口测试工具的使用,这篇接着来看看WebAPI的另一个常见问题:跨域问题.本篇主要从实例的角度分享下CORS解决跨 ...
- 浏览器跨域访问解决方案
浏览器跨域访问解决方案 2015年11月4日 18972次浏览 跨域的概念 跨域大家都知道,不同地址,不同端口,不同级别,不同协议都会构成跨域.例如:about.haorooms.com和www.ha ...
- JSON Web Token(缩写 JWT) 目前最流行的跨域认证解决方案
JSON Web Token(缩写 JWT) 目前最流行的跨域认证解决方案 参考文章: (1)JSON Web Token(缩写 JWT) 目前最流行的跨域认证解决方案 (2)https://www. ...
- web跨域问题解决方案
web跨域问题解决方案 参考文章: (1)web跨域问题解决方案 (2)https://www.cnblogs.com/Fanzifeng/p/7117493.html 备忘一下.
- 【JS】AJAX跨域-JSONP解决方案(一)
[JS]AJAX跨域-JSONP解决方案(一) 参考文章: (1)[JS]AJAX跨域-JSONP解决方案(一) (2)https://www.cnblogs.com/h--d/p/11470534. ...
- session跨域共享解决方案
session跨域共享解决方案 参考文章: (1)session跨域共享解决方案 (2)https://www.cnblogs.com/sustudy/p/5332584.html 备忘一下.
最新文章
- [转] Zend studio中开发常用
- 数据采集与网站统计实现全过程
- XML-RPC远程方法调用
- 大商超的2020:转型、收紧、试新
- Left 4 Dead升级补丁总汇(3663-3986)
- 电脑桌面图标异常 计算机只显示C盘,Windows7系统桌面图标异常如何解决?
- php revel,试用revel-一个基于golang的web框架
- jQuery 图表插件 jqChart 使用
- mpchart点击_MPAndroidChart实现K线面板(一)
- vray渲染里服务器信息,VRay分布式渲染详细介绍
- 批量识别PDF文件(图片类型)中的文字
- 一小时学会Python3爬虫基础(七)高级数据的全部操作:列表
- 论文解读:MeLU:Meta-Learned User Preference Estimator for Cold-Start Recommendation
- 社交网络中的Link Prediction
- Kubernetes kubeconfig配置文件
- 论文阅读:A Survey on Transfer Learning
- IIS的应用程序池,程序异常停用,可能的原因
- Idea 菜单栏 Build 选项
- android即时通讯开发!一个三非渣本的Android校招秋招之路,附答案
- Git查看/修改/添加远程仓库地址