一、简介

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应用跨域问题解决方案相关推荐

  1. 详解SpringBoot应用跨域访问解决方案

    详解SpringBoot应用跨域访问解决方案 参考文章: (1)详解SpringBoot应用跨域访问解决方案 (2)https://www.cnblogs.com/zimug/p/11832737.h ...

  2. PHP下ajax跨域的解决方案之CORS

    PHP下ajax跨域的解决方案之CORS 参考文章: (1)PHP下ajax跨域的解决方案之CORS (2)https://www.cnblogs.com/jkko123/p/6294625.html ...

  3. C#进阶系列——WebApi 跨域问题解决方案:CORS

    C#进阶系列--WebApi 跨域问题解决方案:CORS 参考文章: (1)C#进阶系列--WebApi 跨域问题解决方案:CORS (2)https://www.cnblogs.com/landea ...

  4. JSON Web Token(缩写 JWT) 目前最流行、最常见的跨域认证解决方案,前端后端都需要会使用的东西

    JSON Web Token(缩写 JWT)是目前最流行,也是最常见的跨域认证解决方案.无论是咱们后端小伙伴,还是前端小伙伴对都是需要了解. 本文介绍它的原理.使用场景.用法. 关于封面:这个冬天你过 ...

  5. 跨域学习笔记2--WebApi 跨域问题解决方案:CORS

    自己并不懂,在此先记录下来,留待以后学习... 正文 前言:上篇总结了下WebApi的接口测试工具的使用,这篇接着来看看WebAPI的另一个常见问题:跨域问题.本篇主要从实例的角度分享下CORS解决跨 ...

  6. 浏览器跨域访问解决方案

    浏览器跨域访问解决方案 2015年11月4日 18972次浏览 跨域的概念 跨域大家都知道,不同地址,不同端口,不同级别,不同协议都会构成跨域.例如:about.haorooms.com和www.ha ...

  7. JSON Web Token(缩写 JWT) 目前最流行的跨域认证解决方案

    JSON Web Token(缩写 JWT) 目前最流行的跨域认证解决方案 参考文章: (1)JSON Web Token(缩写 JWT) 目前最流行的跨域认证解决方案 (2)https://www. ...

  8. web跨域问题解决方案

    web跨域问题解决方案 参考文章: (1)web跨域问题解决方案 (2)https://www.cnblogs.com/Fanzifeng/p/7117493.html 备忘一下.

  9. 【JS】AJAX跨域-JSONP解决方案(一)

    [JS]AJAX跨域-JSONP解决方案(一) 参考文章: (1)[JS]AJAX跨域-JSONP解决方案(一) (2)https://www.cnblogs.com/h--d/p/11470534. ...

  10. session跨域共享解决方案

    session跨域共享解决方案 参考文章: (1)session跨域共享解决方案 (2)https://www.cnblogs.com/sustudy/p/5332584.html 备忘一下.

最新文章

  1. [转] Zend studio中开发常用
  2. 数据采集与网站统计实现全过程
  3. XML-RPC远程方法调用
  4. 大商超的2020:转型、收紧、试新
  5. Left 4 Dead升级补丁总汇(3663-3986)
  6. 电脑桌面图标异常 计算机只显示C盘,Windows7系统桌面图标异常如何解决?
  7. php revel,试用revel-一个基于golang的web框架
  8. jQuery 图表插件 jqChart 使用
  9. mpchart点击_MPAndroidChart实现K线面板(一)
  10. vray渲染里服务器信息,VRay分布式渲染详细介绍
  11. 批量识别PDF文件(图片类型)中的文字
  12. 一小时学会Python3爬虫基础(七)高级数据的全部操作:列表
  13. 论文解读:MeLU:Meta-Learned User Preference Estimator for Cold-Start Recommendation
  14. 社交网络中的Link Prediction
  15. Kubernetes kubeconfig配置文件
  16. 论文阅读:A Survey on Transfer Learning
  17. IIS的应用程序池,程序异常停用,可能的原因
  18. Idea 菜单栏 Build 选项
  19. android即时通讯开发!一个三非渣本的Android校招秋招之路,附答案
  20. Git查看/修改/添加远程仓库地址

热门文章

  1. 废旧光盘手工小制作_废旧光盘大变身:自制光盘台灯做法教程
  2. 【HCIA】《OSI参考模型》看这样就足够了~~~
  3. 切比雪夫距离 ( Chebyshev Distance )
  4. 佳能相机的拍照应用开发canon EDSDK C#
  5. STM8L低功耗HALT模式一些总结
  6. 学习的力度应该与需求目的相匹配
  7. stm32 IIC通信
  8. Vue的双向数据绑定原理是什么
  9. 我是一个教师,是一个会长,是一个RL也是一个普通的WOWER
  10. 代理模式(代理设计模式)详解