日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

請求CDN加速域名出現跨域問題并提示“The 'Access-Control-Allow-Origin' header has a value 'xxx' that is not equal to the supplied origin”

更新時間:

問題描述

請求CDN加速域名出現跨域報錯,具體信息如下:

The 'Access-Control-Allow-Origin' header has a value 'xxx' that is not equal to the supplied origin

問題原因

從問題描述的內容可以看出,CDN響應的Access-Control-Allow-Origin跨域頭的Value值,和客戶端請求的Origin跨域頭不一致,導致瀏覽器沒有響應這個請求。例如,請求跨域頭為“Origin:http://域名A”,但是響應的跨域頭為“Access-Control-Allow-Origin:http://域名B”。出現該問題的原因有以下三種情況:

  • CDN配置的跨域頭和客戶端請求的Origin不一致
  • 源站配置的跨域頭被CDN緩存
  • 瀏覽器緩存

解決方案

  • CDN配置的跨域頭和客戶端請求的Origin不一致:
    這種情況需要修改CDN的跨域頭配置,配置成和客戶端請求的Origin一致。目前CDN默認只能配置一個跨域頭,如果實際業務里存在多個Origin的情況下,CDN的跨域響應頭值可以配置成“*”,如何配置詳情請參見CDN如何通過HTTP頭配置跨域資源共享(CORS)
  • 源站配置的跨域頭被CDN緩存:
    第一次客戶端請求的時候,請求跨域頭為“Origin:http://域名A”,CDN沒有命中緩存,按照規則去回源,由于源站配置了跨域頭,響應了“Access-Control-Allow-Origin:http://域名A” ;第二次客戶端請求的時候,請求跨域頭為“Origin:http://域名B”,但是由于CDN之前已經緩存了第一次請求的數據,從而會直接返回緩存數據,而緩存數據里跨域響應頭為“Access-Control-Allow-Origin:http://域名A”,這就導致響應的值和客戶端不匹配,導致被瀏覽器拒絕訪問。針對這種情況有以下兩種解法:
    • 方案一:
      源站不用配置跨域頭,直接在CDN上配置跨域頭即可。然后刷新CDN的緩存,將歷史緩存都清除掉,如何刷新請參見刷新和預熱資源
    • 方案二:
      在CDN上配置Access-Control-Allow-Origin響應頭參數時,將是否允許重復選擇為不允許即可,這種情況下當源站響應跨域頭時,CDN會去掉源站的響應頭,按照CDN的跨域響應頭規則響應給客戶端。
  • 瀏覽器緩存:
    第一次客戶端請求的時候,請求跨域頭為“Origin:http://域名A”,CDN響應了“Access-Control-Allow-Origin:http://域名A” ;第二次客戶端請求的時候,請求跨域頭為“Origin:http://域名B”,但是由于瀏覽器緩存了上一次請求的結果,直接返回了緩存數據,而緩存數據里跨域響應頭為“Access-Control-Allow-Origin:http://域名A”,導致響應的值和客戶端不匹配,導致被瀏覽器拒絕訪問。
    出現這種問題時,需要強制瀏覽器的緩存。且為了避免這種情況的發生,建議在CDN上配置Cache-Control為no-cache,強制瀏覽器不緩存數據。

適用于

  • CDN
  • DCDN