全部產品
Search
文件中心

:發送跨域請求時報錯Access-Control-Allow-Origin不能為*

更新時間:Feb 28, 2024

問題描述

在OSS中將Access-Control-Allow-Origin的值設定為萬用字元"*",並在前端代碼中將Access-Control-Allow-Credentials設定為true,然後在瀏覽器跨域訪問OSS檔案時,出現以下報錯:

Response to preflight request doesn't pass access control check: The value of the 'Access-Control-Allow-Origin' header in the response must not be the wildcard '*' when the request's credentials mode is 'include'.

問題原因

瀏覽器的安全性原則要求Access-Control-Allow-Credentials為True時,Access-Control-Allow-Origin的值不能為萬用字元"*",以防止任意域訪問資源並擷取Credentials資訊(包括Cookies、Authorization Headers等敏感性資料)。

解決方案

  • 如果您需要在要求標頭中保留Credentials資訊,將Access-Control-Allow-Origin的值從萬用字元*修改為具體的網域名稱(例如https://example.com)。具體操作,請參見跨網域設定

  • 如果您不需要在要求標頭中保留Credentials資訊,您可以在前端代碼中將Access-Control-Allow-Credentials設定為false。範例程式碼如下。

    xhr.withCredentials = false