cors配置有以下幾項:
來源(allowedorigin):允許跨域請求的來源,可以同時指定多個。配置時需帶上完整的域資訊,例如<code>http://10.100.100.100:8001</code>或<code>https://www.aliyun.com</code>。注意, 不要遺漏了協定名http或https ,如果端口不是預設的<code>80</code>,還需要帶上端口。如果不能确定的域名,可以打開浏覽器的調試功能,檢視header中的<code>origin</code>。域名支援通配符<code>*</code>,每個域名中允許最多使用一個<code>*</code>,例如<code>https://*.aliyun.com</code>。如果來源指定為<code>*</code>,則表示允許所有來源的跨域請求。
method:按照需求開通對應的方法即可,調試時可以全部選擇。
allow header:允許的跨域請求header。允許配置多條比對規則,以回工廠中的房間隔。在access-control-request-headers中指定的每個header,都必須在allowed header中有對應項。header容易遺漏,沒有特殊需求的情況下,建議設定為<code>*</code>,表示允許所有。大小寫不敏感。
expose header:暴露給浏覽器的header清單,即使用者從應用程式中通路的響應頭(例如一個javascript的xmlhttprequest對象)。不允許使用通配符。具體的配置需要根據應用的需求确定,隻暴露需要使用的header。如果不需要暴露可以不填。大小寫不敏感。該項是可選配置項。
緩存時間(maxageseconds):浏覽器對特定資源的預取請求(options請求)傳回結果的緩存時間,機關為秒。如果沒有特殊情況可以稍大一點,比如60秒。該項是可選配置項。
cors的配置方法一般是針對每個通路來源單獨配置規則,不将多個來源混到一個規則,多個規則之間不要有覆寫沖突。其它的選項隻開放需要的權限即可。
cors配置錯誤會報如下錯誤:
浏覽器報類似如下錯誤:
oss報如下錯誤:
提示: cors報錯一般是站點類應用導緻,浏覽器中可以檢視請求詳情。如chrome,按 <code>f12</code> 打開 <code>開發者工具</code> ,在 <code>network</code> 中檢視相應元素; oss傳回的錯誤可以通過抓包擷取。如使用wireshark,篩選器可以指定為 <code>host bucket-name.oss-cn-beijing.aliyuncs.com</code> 。
cors可能錯誤如下:
<code>來源(allowedorigin)</code>配置不正确;
<code>method(allowedmethod)</code>配置錯誤;
<code>allow header</code>配置錯誤;
<code>expose header</code>配置錯誤。
調試方法:
來源(allowedorigin)設定成<code>*</code>,确認該配置項無誤。如果成<code>*</code>後可以成功上傳,說明是<code>來源(allowedorigin)</code>配置錯誤,請根據規則認真檢查;
method(allowedmethod) 全部選擇(get、put、delete、post、head) ,确認該配置項目無誤;
allow header配置成<code>*</code>,确認該配置無誤;
expose header設定為指定值或者不填,确認該項配置無誤。
在控制台的<code>對象存儲oss -> bucket -> bucket屬性 -> 跨域設定</code> 配置上述選項。