.net core入門-跨域訪問配置


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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM