Why ~ CORS
網頁前台開發,如果使用RESTful,應該就會遇到CORS (Cross-Origin Requests)的問題。
查了資料後一般都是加入Header來對應解決。常有的方式是直接Open管控,這樣就失去了安全性的初衷。
先回到為什麼要有CORS,所要管控的是什麼來思考
網頁應用程式有以下三個概要角色,WebService提供前台頁面程式,但因為Client Browser的實體可以多個無法固定計算
CORS機制有功能為管控指定Origin所提供的前台程式碼叫用Restful Service才會被受理
先把閘門放在,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
參考
留言
張貼留言