通常状况WebApi都是跨域请求,没有设置跨域通常会报如下错误html
No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:48057' is therefore not allowed access.
ASP.net Core 跨域有两种,全局和区域api
打开Startup.cs文件.在ConfigureServices方法中添加如下代码跨域
//配置跨域处理,容许全部来源: services.AddCors(options => options.AddPolicy("自定义的跨域策略名称", p => p.AllowAnyOrigin()) );
//容许一个或多个具体来源: services.AddCors(options => { // Policy 名稱 CorsPolicy 是自訂的,能够本身改 options.AddPolicy("跨域规则的名称", policy => { // 設定允許跨域的來源,有多個的話能够用 `,` 隔開 policy.WithOrigins("http://localhost:3000","http://127.0.0.1") .AllowAnyHeader() .AllowAnyMethod() .AllowCredentials(); }); });
以上两种按需求选择一种便可.app
Configure方法中添加如下代码cors
app.UseCors("自定义的跨域策略名称");//必须位于UserMvc以前
app.UseMvc();
1.ConfigureServices方法不变,删去Configure中的app.UseCors()方法spa
2.在Controller顶部或者Action方法顶部加上[EnableCors("自定义的跨域策略名称")]特性,例如.net
[EnableCors("自定义的跨域策略名称")]
[Route("api/[controller]")]
public class ContactController : Controller
以上就可实现指定某个controller或者action跨域code
禁止跨域在Controller或者Action加上[DisableCors]特性便可禁止跨域htm
[HttpGet("{id}")] [DisableCors] public string Get(int id) { return "value"; }
参考:blog
https://blog.johnwu.cc/article/asp-net-core-cors.html?from=singlemessage&isappinstalled=0
https://docs.microsoft.com/en-us/aspnet/core/security/cors
http://www.cnblogs.com/tianma3798/p/6920704.html