前言:本系列文章适合有初/中级.NET知识的同学阅读(请在电脑上打开页面,获取更好的阅读效果)。
(1)本系列文章,旨在讲述研发一个中大型项目所需要了解的一系列“基本构件”,并提供这些“基本构件”在全网的【最简单】、【最快速】使用方法!!(并不深究技术原理)
(2)通过阅读本系列文章,能让你在正规“项目研发”方面快速入门+进阶,并能达成“小团队构建大网站”的目的。
(3)本系列文章采用的技术,已成功应用到人工智能、产业互联网、社区电商、游戏、金融风控、智慧医疗、等项目上。
CORS跨域访问问题往往出现在“浏览器客户端”通过ajax调用“服务端API”的时候。而且若是深究原理,还会发现跨域问题其实还分为【简单跨域】与【复杂跨域】这两种情况。
网上对解决跨域限制有很多说明文章,但绝大多数要么解决的不完善(比如,没有区分【简单跨域】与【复杂跨域】),要么就是解决方案过于复杂化,代码量巨大,尤其是在.Net Framework环境下。
先说.Net Framework环境下
本文提供一种极度简单且十分完善的跨域访问限制解决方案,只需一行代码。即在服务端开发工程中添加Global.asax文件,并让类继承自DeveloperSharp.Structure.Base.Global即可(需从NuGet引用DeveloperSharp包)。代码如下:
public class Global : DeveloperSharp.Structure.Base.Global { }
如此,就解决了跨域访问问题。
另外,此时若需要使用Application_Start等方法,则形式上需要稍做变化。示例如下:
public class Global : DeveloperSharp.Structure.Base.Global { protected override void ApplicationStart(object sender, EventArgs e) { Application["count"] = 100; } protected override void SessionStart(object sender, EventArgs e) { Application["count"] = Convert.ToInt32(Application["count"]) + 1; } }
再说.Net Core环境下
.Net Core对跨域问题做了相关优化,解决起来相对容易 。代码如下:
//在Startup.cs或Program.cs文件中进行设置 Services.AddCors(Option => Option.AddPolicy("CorsPolicy", Policy => Policy.AllowAnyOrigin() .AllowAnyHeader() .AllowAnyMethod() .AllowCredentials()) ); -------------------------- app.UseCors("CorsPolicy");//须在app.UseMvc()之前