如果急着解決跨域問題則需要配置該配置到應用程序的Web.config文件中。如果想了解一下WebApi跨域問題則繼續往下看
<system.webServer> <httpProtocol> <customHeaders> <add name="Access-Control-Allow-Origin" value="*" /> <add name="Access-Control-Allow-Headers" value="*" /> <add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE" /> </customHeaders> </httpProtocol> ... </system.webServer>
1,為什么會存在跨域問題?
瀏覽器會對JavaScript的執行進行相應的限制,導致跨域問題
2,同源策略
“源”是指站點或者域。必須要求相應的URI在如下三個方面均是相同的:
①主機名稱(域/子域名或者IP地址)
②端口號
③網絡協議(http或者https)
例如:https://192.168.1.1:8080(源)
在同源的情況下不會出現跨域問題
3,什么是CORS(跨域資源共享)規范?
CORS是各個瀏覽器廠家共同遵守的標准
①對消費者授權
如果瀏覽器對CORS支持,由它發起的請求會攜帶一個“Origin”的報頭表明請求頁面所在的站點(例如:Origin:https://192.168.1.1:8080)
對消費者授權通過“Access-Control-Allow-Origin”響應報頭來設置(設置“*”對所有消費者授權)
②對響應報頭的授權
設置一組直接暴露給客戶端JavaScript程序的響應報頭,但是對簡單響應報頭設置是無效的
CORS簡單響應報頭包括:Cache-Control、Content-Language、Content-Type、Expries、Last-Modified、Pragma
"Access-Control-Expose-Headers"對響應報頭的授權(設置“*”對所有響應報頭授權)
③預檢請求
所謂預檢機制就是在瀏覽器發送真正的跨域資源請求前,先發送一個預檢請求(可以使用“Access-Control-Max-Age”設置緩存時間)
CORS規范將跨域資源請求划分為兩種類,即“簡單請求”和“非簡單請求”
1>簡單Http方法:GET、HEAD、POST
2>簡單請求報頭:Accept、Accept-Language、Content-Language、Content-Type(application/x-www-form-urlencoded、multipart/form-data、text/plain)
3>自定義請求報頭:瀏覽器自動生成的報頭、由JavaScript自行添加的報頭
“簡單請求”包括:①請求采用簡單HTTP方法②請求不具有自定請求報頭或者是簡單請求報頭
“Access-Control-Allow-Methods”:跨域資源請求允許采用的HTTP方法列表
“Access-Control-Allow-Headers”:跨域資源請求允許攜帶的自定義報頭列表
“Access-Control-Max-Age”:將響應結果進行緩存(單位秒),這樣可以讓瀏覽器避免頻繁的發送預檢請求
④是否支持用戶憑證
如果客戶端JavaScript程序利用一個withCredentials屬性為true的XMLHttpRequest發送了一個跨域請求,但是瀏覽器得到的響應中不具有一個值為“ture”的響應報頭“Access-Control-Allow-Credentials”,它對獲取資源的操作將會被瀏覽器拒絕