在用ajax进行请求服务器资源时若是协议+主机名+端口号 (如存在)相同则容许交互,不然会出现跨域问题,不能访问和操做其余域下的资源。经常使用解决方式有在前端使用jsonp和在后端启用CORS。前端
jsonp能够支持get请求,但不支持post请求。完美的解决方案仍是服务器端启用CORS。在.NET Core 3.1 启用CORS变得很是简单,不须要像早期的.NET CORE版本须要手动安装CORS程序包,只须要2步就能够完成。ajax
一、添加策略json
打开服务器端项目的“Startup.cs”文件,找到ConfigureServices(IServiceCollection services)方法,添加以下代码。c#
services.AddCors(options => { options.AddPolicy("any", builder => { builder.AllowAnyOrigin().AllowAnyMethod().AllowAnyHeader(); }); });
代码表示在注入cors中间件:后端
“any”表示策略名称,能够随便起,在第2步会用到;跨域
AllowAnyOrigin表示容许任何域;服务器
AllowAnyMethod表示容许任何方法;app
AllowAnyHeader表示容许任何消息头。cors
若是是容许指定的域、方法、消息头须要使用WithOrigins、WithMethod、WithMethod方法。post
在这里能够添加多条策略。
二、启用策略
在Configure(IApplicationBuilder app, IWebHostEnvironment env)方法中添加如下代码。
app.UseCors("any");
括号中的"any"表示要启用的策略名称(第1步中定义的)。
以上2步便可启用跨域请求访问,前端不须要作任何更改。