Asp.net Core 跨域配置
一般情況WebApi都是跨域請求,沒有設置跨域一般會報以下錯誤
No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:48057' is therefore not allowed access.
ASP.net Core 跨域有兩種,全局和區域
全局跨域:
打開Startup.cs文件.在ConfigureServices方法中添加以下代碼
1.配置跨域處理,允許所有來源:
//配置跨域處理,允許所有來源: services.AddCors(options => options.AddPolicy("自定義的跨域策略名稱", p => p.AllowAnyOrigin()) );
2.允許一個或多個具體來源:
//允許一個或多個具體來源: services.AddCors(options => { // Policy 名稱 CorsPolicy 是自訂的,可以自己改 options.AddPolicy("跨域規則的名稱", policy => { // 設定允許跨域的來源,有多個的話可以用 `,` 隔開 policy.WithOrigins("http://localhost:3000","http://127.0.0.1") .AllowAnyHeader() .AllowAnyMethod() .AllowCredentials(); }); });
以上兩種按需求選擇一種即可.
Configure方法中添加以下代碼
app.UseCors("自定義的跨域策略名稱");//必須位於UserMvc之前
app.UseMvc();
局部跨域第一種用法:
1.ConfigureServices方法不變,刪去Configure中的app.UseCors()方法
2.在Controller頂部或者Action方法頂部加上[EnableCors("自定義的跨域策略名稱")]特性,例如
[EnableCors("自定義的跨域策略名稱")]
[Route("api/[controller]")]
public class ContactController : Controller
以上就可實現指定某個controller或者action跨域
禁止跨域:
禁止跨域在Controller或者Action加上[DisableCors]特性即可禁止跨域
[HttpGet("{id}")] [DisableCors] public string Get(int id) { return "value"; }
參考文章:https://www.cnblogs.com/xiaoliangge/p/7650465.html