Why ~ CORS

 

網頁前台開發,如果使用RESTful,應該就會遇到CORS (Cross-Origin Requests)的問題。

查了資料後一般都是加入Header來對應解決。常有的方式是直接Open管控,這樣就失去了安全性的初衷。

先回到為什麼要有CORS,所要管控的是什麼來思考

網頁應用程式有以下三個概要角色,WebService提供前台頁面程式,但因為Client Browser的實體可以多個無法固定計算

CORS機制有功能為管控指定Origin所提供的前台程式碼叫用Restful Service才會被受理

image

 

先把閘門放在,Cross-Origin ,跨了不同的Origin,如何定義不同的Origin

以 http://webservice:80 而言,以下都是不同Origin

https://webservice (protocol )

http://client (host )

http://webservice:81 (port )

http://www.webservice:80 (host )

就會被視為不同Origin,會需要在CORS機制控管

 

協定上相關的Header有以下

Request headers

  • Origin
  • Access-Control-Request-Method
  • Access-Control-Request-Headers
Response headers
  • Access-Control-Allow-Origin
  • Access-Control-Allow-Credentials
  • Access-Control-Expose-Headers
  • Access-Control-Max-Age
  • Access-Control-Allow-Methods
  • Access-Control-Allow-Headers

 

目前支援CORS的Browser 版本參考 http://enable-cors.org/client.html

其它的部份就是依不同實作機制工具做不同的設定

MS.MVC 5: http://www.asp.net/web-api/overview/security/enabling-cross-origin-requests-in-web-api

 

參考

留言

這個網誌中的熱門文章

MS.MVC 和 Newtonsoft.Json (json.net) 的版本不相容問題

Docker on Windows – 網路不通問題

Android Studio 2 使用 Visual Studio Emulator for Android 模擬器