1.瀏覽器為什麼不能跨域? 瀏覽器有一個基本的安全策略--同源策略。為保證用戶的信息安全,它對不同源的文檔或腳本對當前文檔的讀寫操作做了限制。功能變數名稱,子功能變數名稱,埠號或協議不同都屬於不同源,當腳本被認為是來自不同源時,瀏覽器雖然會發出這個請求,但是會攔截響應內容。 2.解決跨域問題 CORS(Cross ...
1.瀏覽器為什麼不能跨域?
瀏覽器有一個基本的安全策略--同源策略。為保證用戶的信息安全,它對不同源的文檔或腳本對當前文檔的讀寫操作做了限制。功能變數名稱,子功能變數名稱,埠號或協議不同都屬於不同源,當腳本被認為是來自不同源時,瀏覽器雖然會發出這個請求,但是會攔截響應內容。
2.解決跨域問題 CORS(Cross-Origin Resource Sharing,跨域資源共用),通過向http的請求報文和響應報文裡面加入相應的標識告訴瀏覽器它能訪問哪些功能變數名稱的請求,直接在項目中安裝Microsoft.AspNetCore.Cors即可使用。 (1).net core 在appsettings中配置可以訪問的路徑"cors": { "default": "http://localhost:0000,http://localhost:1111" },在Startup中ConfigureServices下配置
var urls = Configuration.GetSection("cors:default").Value.Split(','); services.AddCors(options => { options.AddPolicy("AllowOrigins", builder => { builder.WithOrigins(urls).AllowAnyMethod().AllowAnyHeader().AllowCredentials(); }); });
在Configure中使用
app.UseCors("AllowOrigins");
(2)web API 在Web.config中配置:
<add key="allowOrigins" value="http://localhost:0000,http://localhost:1111"/> <add key="allowHeaders" value="*"/> <add key="allowMethods" value="*"/>
在WebApiConfig中配置:
var allowOrigins = ConfigurationManager.AppSettings["allowOrigins"]; var allowHeaders = ConfigurationManager.AppSettings["allowHeaders"]; var allowMethods = ConfigurationManager.AppSettings["allowMethods"]; var globalCors = new EnableCorsAttribute(allowOrigins, allowHeaders, allowMethods); config.EnableCors(globalCors);