.Net Core跨域處理

查看官方文檔

https://docs.microsoft.com/zh-cn/aspnet/core/security/cors?view=aspnetcore-2.2

分兩部分處理跨域

  • ConfigureServices裏添加
services.AddCors(options =>

        {

            options.AddPolicy(MyAllowSpecificOrigins,

            builder =>

            {

                builder.WithOrigins("http://example.com",

                                    "http://www.contoso.com");

            });

        });
  • Configure裏添加
app.UseCors(MyAllowSpecificOrigins);

問題1:

前端調試是還是存在跨域問題

解決(谷歌爲例):  

options.AddPolicy(MyAllowSpecificOrigins,

                builder =>

                {

                    builder.WithOrigins("http://example.com",

                                        "http://www.contoso.com","http://192.168.66.149:81");

                });

或者這裏可以之前全部放開域檢測  

 options.AddPolicy(MyAllowSpecificOrigins,

                builder =>

                {

                    builder.WithOrigins("http://example.com",

                                        "http://www.contoso.com").AllowAnyMethod().AllowAnyHeader().AllowAnyOrigin().AllowCredentials()));;

                });

問題2:

不全部放開域檢測,不同的action跨域控制問題

官方文檔說[EnableCors]寫在方法上面

這裏說明一下

ConfigureServices按照上面官方文檔寫時,action最上一行不需要寫[EnableCors]也可以

ConfigureServices這麼寫時

services.AddCors(options =>

            {

                options.AddDefaultPolicy(

                builder =>

                {



                    builder.WithOrigins("http://example.com",

                                        "http://192.168.66.149:81");

                });

                options.AddPolicy(MyAllowSpecificOrigins,

                builder =>

                {

                    builder.WithOrigins("http://example.com",

                                        "http://www.contoso.com","http://192.168.66.149:81");

                });

            });

[EnableCors]代表默認策略

[EnableCors("_myAllowSpecificOrigins")]

這樣區別兩種策略

如果方法前沒有寫默認的是[EnableCors("_myAllowSpecificOrigins")]

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章