682
機器人
設置跨域訪問__安全管理_開發人員指南_對象存儲 OSS-阿裏雲
跨域訪問,或者說JavaScript的跨域訪問問題,是瀏覽器出於安全考慮而設置的一個限製,即同源策略。當來自於A網站的頁麵中的JavaScript代碼希望訪問B網站的時候,瀏覽器會拒絕該訪問,因為A、B兩個網站是屬於不同的域。
在實際應用中,經常會有跨域訪問的需求,比如用戶的網站www.a.com,後端使用了OSS。在網頁中提供了使用JavaScript實現的上傳功能,但是在該頁麵中,隻能向www.a.com發送請求,向其他網站發送的請求都會被瀏覽器拒絕。這樣就導致用戶上傳的數據必須從www.a.com中轉。如果設置了跨域訪問的話,用戶就可以直接上傳到OSS而無需從www.a.com中轉。
跨域資源共享的實現
跨域資源共享(Cross-Origin Resource Sharing),簡稱CORS,是HTML5提供的標準跨域解決方案,OSS支持CORS標準來實現跨域訪問。具體的CORS規則可以參考W3C CORS規範。其實現如下:
- CORS通過HTTP請求中附帶Origin的Header來表明自己來源域,比如上麵那個例子,Origin的Header就是www.a.com。
- 服務器端接收到這個請求之後,會根據一定的規則判斷是否允許該來源域的請求。如果允許的話,服務器在返回的響應中會附帶上Access-Control-Allow-Origin這個Header,內容為www.a.com來表示允許該次跨域訪問。如果服務器允許所有的跨域請求,將Access-Control-Allow-Origin的Header設置為*即可,
- 瀏覽器根據是否返回了對應的Header來決定該跨域請求是否成功,如果沒有附加對應的Header,瀏覽器將會攔截該請求。如果是非簡單請求,瀏覽器會先發送一個OPTIONS請求來獲取服務器的CORS配置,如果服務器不支持接下來的操作,瀏覽器也會攔截接下來的請求。
OSS提供了CORS規則的配置從而根據需求允許或者拒絕相應的跨域請求。該規則是配置在Bucket級別的。詳情可以參考PutBucketCORS。
這裏有幾個要點:
- CORS相關的Header附加等都是瀏覽器自動完成的,用戶不需要有任何額外的操作。CORS操作也隻在瀏覽器環境下有意義。
- CORS請求的通過與否和OSS的身份驗證是完全獨立的,即OSS的CORS規則僅僅是用來決定是否附加CORS相關的Header的一個規則。是否攔截該請求完全由瀏覽器決定。
- 使用跨域請求的時候需要關注瀏覽器是否開啟了Cache功能。當運行在同一個瀏覽器上分別來源於www.a.com和www.b.com的兩個頁麵都同時請求同一個跨域資源的時候,如果www.a.com的請求先到達服務器,服務器將資源帶上Access-Control-Allow-Origin的Header為www.a.com返回給用戶。這個時候www.b.com又發起了請求,瀏覽器會將Cache的上一次請求返回給用戶,此時Header的內容和CORS的要求不匹配,就會導致後麵的請求失敗。
功能使用參考
最後更新:2016-11-23 16:04:09
上一篇:
設置防盜鏈__安全管理_開發人員指南_對象存儲 OSS-阿裏雲
下一篇:
服務器端加密編碼__安全管理_開發人員指南_對象存儲 OSS-阿裏雲
基本概念__用戶手冊_雲服務總線 CSB-阿裏雲
雲上數據集成方案__解決方案_平台介紹_數加平台介紹-阿裏雲
JavaScript版本__上傳SDK_SDK手冊_視頻點播-阿裏雲
主賬號管理__賬號管理_用戶指南_企業級分布式應用服務 EDAS-阿裏雲
模煳搜索詳解__功能篇_最佳實踐_開放搜索-阿裏雲
4.3 INSERT/DELETE命令__第四章 DML_使用手冊_分析型數據庫-阿裏雲
CPU__常用指標_使用手冊_性能測試-阿裏雲
綁定彈性公網 IP__網絡相關接口_API 參考_雲服務器 ECS-阿裏雲
影院_阿裏雲幫助中心-阿裏雲,領先的雲計算服務提供商
短信字數最多能發多少個字? 建議400個字以內的短信。__常見問題_短信服務-阿裏雲
相關內容
常見錯誤說明__附錄_大數據計算服務-阿裏雲
發送短信接口__API使用手冊_短信服務-阿裏雲
接口文檔__Android_安全組件教程_移動安全-阿裏雲
運營商錯誤碼(聯通)__常見問題_短信服務-阿裏雲
設置短信模板__使用手冊_短信服務-阿裏雲
OSS 權限問題及排查__常見錯誤及排除_最佳實踐_對象存儲 OSS-阿裏雲
消息通知__操作指南_批量計算-阿裏雲
設備端快速接入(MQTT)__快速開始_阿裏雲物聯網套件-阿裏雲
查詢API調用流量數據__API管理相關接口_API_API 網關-阿裏雲
使用STS訪問__JavaScript-SDK_SDK 參考_對象存儲 OSS-阿裏雲