問題描述
在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
文檔內容是否對您有幫助?