閱讀653 返回首頁    go 阿裏雲


OSS跨域資源共享(CORS)錯誤及排除__常見錯誤及排除_最佳實踐_對象存儲 OSS-阿裏雲

跨域資源共享(Cross Origin Resource Sharing,簡稱 CORS)的介紹及配置請參看 跨域資源共享最佳實踐

配置項

CORS配置有以下幾項:

  • 來源(AllowedOrigin)
    允許跨域請求的來源,可以同時指定多個。配置時需帶上完整的域信息,例如https://10.100.100.100:8001https://www.aliyun.com。注意, 不要遺漏了協議名http或https ,如果端口不是默認的80,還需要帶上端口。如果不能確定的域名,可以打開瀏覽器的調試功能,查看header中的Origin。域名支持通配符*,每個域名中允許最多使用一個*,例如https://*.aliyun.com。如果來源指定為*,則表示允許所有來源的跨域請求。
  • Method
    按照需求開通對應的方法即可,調試時可以全部選擇。
  • Allow Header
    允許的跨域請求header。允許配置多條匹配規則,以回車間隔。在Access-Control-Request-Headers中指定的每個header,都必須在Allowed Header中有對應項。Header容易遺漏,沒有特殊需求的情況下,建議設置為*,表示允許所有。大小寫不敏感。
  • Expose Header
    暴露給瀏覽器的header列表,即用戶從應用程序中訪問的響應頭(例如一個Javascript的XMLHttpRequest對象)。不允許使用通配符。具體的配置需要根據應用的需求確定,隻暴露需要使用的header。如果不需要暴露可以不填。大小寫不敏感。該項是可選配置項。
  • 緩存時間(MaxAgeSeconds)
    瀏覽器對特定資源的預取請求(OPTIONS請求)返回結果的緩存時間,單位為秒。如果沒有特殊情況可以稍大一點,比如60秒。該項是可選配置項。

CORS的配置方法一般是針對每個訪問來源單獨配置規則,不將多個來源混到一個規則,多個規則之間不要有覆蓋衝突。其它的選項隻開放需要的權限即可。

錯誤排除

報錯

CORS配置錯誤會報如下錯誤:

  • 瀏覽器報類似如下錯誤:

    1. OPTIONS https://bucket.oss-cn-beijing.aliyuncs.com/
    2. XMLHttpRequest cannot load https://bucket.oss-cn-beijing.aliyuncs.com/. Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin '{yourwebsiet}' is therefore not allowed access. The response had HTTP status code 403.
  • OSS報如下錯誤:

    1. <Code>AccessForbidden</Code>
    2. <Message>CORSResponse: This CORS request is not allowed. This is usually because the evalution of Origin, request method / Access-Control-Request-Method or Access-Control-Requet-Headers are not whitelisted by the resource's CORS spec.</Message>

提示:

  • CORS報錯一般是站點類應用導致,瀏覽器中可以查看請求詳情。如Chrome,按 F12 打開 開發者工具 ,在 Network 中查看相應元素;
  • OSS返回的錯誤可以通過抓包獲取。如使用Wireshark,篩選器可以指定為 host bucket-name.oss-cn-beijing.aliyuncs.com
  • OSS返回的錯誤也可以通過CORS的調試程序 oss-h5-upload-js-direct 界麵提示獲取。

其它錯誤請參看 OSS 403錯誤及排除

排錯

CORS可能錯誤如下:

  • 來源(AllowedOrigin)配置不正確
  • Method(AllowedMethod)配置錯誤
  • Allow Header 配置錯誤
  • Expose Header 配置錯誤

調試方法:

  • 來源(AllowedOrigin)設置成*,確認該配置項無誤。如果設置成*後可以成功上傳,說明是來源(AllowedOrigin)配置錯誤,請根據規則認真檢查。
  • 選擇 Method(AllowedMethod) 的全部選項(GET、PUT、DELETE、POST、HEAD),確認該配置項目無誤。
  • Allow Header 配置成*,確認該配置無誤。
  • Expose Header 設置為指定值或者不填,確認該項配置無誤。

提示:在OSS控製台,選擇Bucket後,通過 Bucket屬性 > 跨域設置 配置上述選項。

最後更新:2016-11-23 16:04:18

  上一篇:go OSS 權限問題及排查__常見錯誤及排除_最佳實踐_對象存儲 OSS-阿裏雲
  下一篇:go OSS 403錯誤及排查__常見錯誤及排除_最佳實踐_對象存儲 OSS-阿裏雲