WebApi跨域問題


如果急着解決跨域問題則需要配置該配置到應用程序的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”,它對獲取資源的操作將會被瀏覽器拒絕

 


免責聲明!

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



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