全部產品
Search
文件中心

CDN:修改入站回應標頭

更新時間:Jun 20, 2025

CDN節點上的緩衝到期或者沒有命中緩衝時,CDN節點會向來源站點發起請求來擷取最新內容,來源站點返回的內容以及相關的HTTP頭部資訊就是回源回應標頭。您可以通過調整來源站點修改入站回應標頭,來設定緩衝策略、跨域資源共用等,從而最佳化網站的載入速度、增強Alibaba Content Security Service性、控制資源可訪問性,並提高使用者體驗。

背景資訊

HTTP回應標頭是HTTP的響應訊息頭的組成部分之一,可攜帶特定響應參數資訊並傳遞給用戶端。

當CDN節點上沒有緩衝使用者請求的內容時,CDN會回來源站點拉取資源,來源站點收到CDN的請求後會給出響應。為了便於使用者識別來源站點的響應資訊,您可以修改入站回應標頭功能,改寫使用者來源站點響應報文中的HTTP Header資訊。例如,改寫回源回應標頭中Content-Type參數的值,然後再傳遞給用戶端,以確保用戶端解析正常(如果來源站點返回的Content-Type值有誤,用戶端直接解析將出現亂碼,因此需要在CDN上改寫)。

說明
  • 入站響應指來源站點收到CDN節點的請求後,返回給CDN節點的HTTP訊息。修改入站回應標頭配置只會影響來源站點響應給CDN節點的HTTP訊息,對於CDN節點直接響應給使用者的HTTP訊息不做修改。

  • 不支援對泛網域名稱修改入站回應標頭。

適用情境

以下是一些常見的情境和樣本:

  • 內容類型不正確:如果來源站點返回的內容類型(Content-Type)與實際內容不符,用戶端可能會無法正確解析。例如,一個HTML檔案被錯誤地標記為純文字。這時可以通過配置回源回應標頭來修正。

    樣本:將Content-Type: text/plain更改為Content-Type: text/html

  • 緩衝策略控制:如果您需要對CDN緩衝策略進行更精細的控制,可以調整來源站點的回源回應標頭中的Cache-ControlExpires欄位。這有助於最佳化內容的更新頻率和快取命中率。

    樣本:將Cache-Control: max-age=3600更改為Cache-Control: max-age=86400,以延長緩衝有效期間。CDN的預設緩衝規則具體請參見阿里雲CDN預設緩衝規則及優先順序

  • 跨域資源共用(CORS):如果您希望允許其他網域名稱的Web應用訪問CDN上託管的資源,則需要在來源站點設定Access-Control-Allow-Origin和其他相關的CORS頭。這些設定確保在瀏覽器執行跨域請求時,CDN能夠提供適當的回應標頭給用戶端,避免CORS錯誤。關於跨域訪問問題,您可以參見配置跨域資源共用

    樣本:

    • Access-Control-Allow-Origin: *:允許所有網域名稱進行跨域資源請求。

    • Access-Control-Allow-Methods: GET, POST, OPTIONS:指定允許跨域請求的HTTP方法。

  • 壓縮傳輸:如果來源站點支援壓縮傳輸但沒有啟用,或者使用的壓縮演算法不是最有效,可以通過設定回源回應標頭中的Accept-Encoding來讓來源站點使用最優的壓縮方式。

    樣本:將Accept-Encoding: gzip, deflate更改為Accept-Encoding: br,以優先使用Brotli壓縮。關於Brotli壓縮相關內容具體請參見Brotli壓縮

  • 重新導向:當來源站點需要重新導向使用者到另一個URL時,回源回應標頭可以設定正確的重新導向回應標頭。關於重新導向具體請參見配置回源301/302跟隨

    樣本:Location: https://www.example.com/new-page.html:通知CDN及使用者瀏覽器新的資源位置,用於301或302重新導向。

  • 自訂回源行為:在某些情況下,來源站點可能需要提供一些自訂的頭部資訊給用戶端,以實現特定的功能或跟蹤目的,您可以通過配置回源回應標頭來添加這些自訂頭部。

注意事項

在添加了多條配置的情況下,配置的執行順序是按配置列表從上到下的順序逐條執行,因此需要注意對名稱相同的“HTTP回應標頭”的多個配置操作將會疊加,最終結果可能會與預期不符。例如:

  • 配置1:增加HTTP回應標頭:cache-control: max-age=3600

  • 配置2:增加HTTP回應標頭:cache-control: no-cache

以上兩個配置疊加的結果是配置2最終生效

操作步驟

  1. 登入CDN控制台

  2. 在左側導覽列,單擊域名管理

  3. 域名管理頁面,找到目標網域名稱,單擊操作列的管理

  4. 在指定網域名稱的左側導覽列,單擊回源配置

  5. 單擊修改入站回應標頭頁簽。

  6. 單擊添加

  7. 修改入站回應標頭資訊。

    重要

    當不同的操作方式同時作用於同一個回源回應標頭參數時,會存在操作衝突。此時按照操作類型的優先順序來執行,優先順序順序為替換增加變更刪除。例如,當增加和刪除操作同時作用於同一個參數時,會先增加再刪除。

    增加回應標頭參數

    image

    配置項

    樣本

    說明

    响应头操作

    增加

    在回源HTTP請求中增加指定的回應標頭參數。

    自定义响应头参数

    自訂回源回應標頭

    選擇自訂回源回應標頭或選擇已經預設好的回應標頭參數。

    自定义响应头名称

    x-code

    自訂回應標頭名稱為x-code。

    响应头值

    key1

    一個回應標頭參數中可以配置多個值,多個值用英文逗號(,)分隔。

    key1,key2

    是否允许重复

    允許

    • 允许:可以添加重複的回應標頭參數。例如x-code:key1x-code:key2

    • 不允许:添加同一個回應標頭參數,新值將覆蓋舊值。例如先添加x-code:key1,再添加x-code:key2,最終的值為x-code:key2

    規則條件

    不使用

    規則條件能夠對使用者請求中攜帶的各種參數資訊進行識別,以此來決定某個配置是否對該請求生效。

    • 不使用:不使用規則條件。

    • 選擇已配置的規則條件,新增或修改規則條件請參見規則引擎

    刪除回應標頭參數

    image

    配置項

    樣本

    說明

    响应头操作

    刪除

    刪除所有與回應標頭參數名稱匹配的參數值,無論是否有重複的回應標頭參數。

    自定义响应头参数

    自訂回源回應標頭

    選擇自訂回源回應標頭或選擇已經預設好的回應標頭參數。

    自定义响应头名称

    x-code

    自訂回應標頭名稱為x-code。

    規則條件

    不使用

    規則條件能夠對使用者請求中攜帶的各種參數資訊進行識別,以此來決定某個配置是否對該請求生效。

    • 不使用:不使用規則條件。

    • 選擇已配置的規則條件,新增或修改規則條件請參見規則引擎

    變更回應標頭參數

    image

    配置項

    樣本

    說明

    响应头操作

    變更

    當回應標頭參數不存在重複時,可以正常變更參數,如果有多個重複的回應標頭參數,則不允許變更。

    自定义响应头参数

    自訂回源回應標頭

    選擇自訂回源回應標頭或選擇已經預設好的回應標頭參數。

    自定义响应头名称

    x-code

    自訂回應標頭名稱為x-code。

    响应头变更为

    key1,key3

    一個回應標頭參數中可以配置多個值,多個值用英文逗號(,)分隔。

    規則條件

    規則條件能夠對使用者請求中攜帶的各種參數資訊進行識別,以此來決定某個配置是否對該請求生效。

    • 不使用:不使用規則條件。

    • 選擇已配置的規則條件,新增或修改規則條件請參見規則引擎

    替換回應標頭參數

    image

    配置項

    樣本

    說明

    响应头操作

    替換

    當回應標頭參數不存在重複時,可以正常替換參數,如果有多個重複的回應標頭參數,則不允許替換。

    自定义响应头参数

    自訂回源回應標頭

    選擇自訂回源回應標頭或選擇已經預設好的回應標頭參數。

    自定义响应头名称

    x-code

    自訂回應標頭名稱為x-code。

    查找

    key

    Regex尋找需要替換的參數值。

    替换为

    abc

    Regex替換需要替換的參數值。

    匹配

    匹配所有

    • 匹配所有:所有匹配上的值都會被替換。例如x-code:key1,key2,key3,正則匹配值key替換為abc,替換後的結果為x-code:abc1,abc2,abc3

    • 仅匹配第一个:只有第一個匹配上的值會被替換。例如x-code:key1,key2,key3,正則匹配值key替換為abc,替換後的結果為x-code:abc1,key2,key3

    規則條件

    規則條件能夠對使用者請求中攜帶的各種參數資訊進行識別,以此來決定某個配置是否對該請求生效。

    • 不使用:不使用規則條件。

    • 選擇已配置的規則條件,新增或修改規則條件請參見規則引擎

  8. 單擊確定

預設預設回應標頭

阿里雲CDN預設預設了Cache-Control、Content-Type、Expires、Last-Modified四個修改入站回應標頭,這四個回應標頭是HTTP協議中的重要組成部分,它們分別用於控制緩衝、定義內容類型、設定到期時間以及記錄資源的最後修改時間。

CDN預設預設回應標頭

說明

樣本

Cache-Control

用於控制資源在CDN緩衝中的行為和時間周期的頭資訊。它為CDN節點和用戶端瀏覽器提供了緩衝指示,例如何時緩衝內容、緩衝多久,以及緩衝的內容何時被認為是過時的。優先順序高於舊的Expires頭部。

  • Cache-Control: no-cache強制在使用緩衝的資源之前總是向來源站點進行驗證。

  • Cache-Control: max-age=3600指示資源在3600秒(1小時)內是新鮮的,可以從CDN緩衝中提供,無需回源。

Content-Type

描述了返回給用戶端的資源的資料類型。它協助用戶端正確地解釋和顯示接收到的資料。CDN使用這個頭資訊來處理對應的資料類型以及如何傳輸它們。

  • Content-Type: text/html表示發送的內容是HTML格式。

  • Content-Type: image/jpeg表示資源是JPEG映像格式。

Expires

提供了一個具體的日期/時間,這個時間點之後資源被認為是到期的。CDN使用這個頭來確定資源是否仍然有效,如果到期,CDN將回源請求新的資源。Expires回應標頭是一個相對古老的頭部,在HTTP/1.1中,Cache-Control頭部提供了更細粒度的控制,因此Expires的使用已經逐漸減少。

Expires: Thu, 01 Dec 2023 16:00:00 GMT指出在指定的GMT時間後,內容到期。

Last-Modified

表示資源最後一次被修改的時間。CDN和瀏覽器使用這個回應標頭來判斷自從該資源上次被緩衝後是否有被修改過。

Last-Modified: Wed, 21 Oct 2023 07:28:00 GMT顯示資源最後修改的時間。

配置樣本

樣本一:配置響應文檔屬於某種MIME類型

配置情境

如果您希望配置響應文檔屬於某種MIME類型。

說明

MIME類型主要包含以下幾類:

  • 文本類型:包括文字檔(例如.txt、.csv)和HTML檔案(例如.html、.htm、.shtml)。

  • 圖片類型:包括常見的圖片檔案(例如.jpg、.png、.gif)。

  • 音訊類型:包括音頻檔案(例如.mp3、.wav)。

  • 視頻類型:包括視頻檔案(例如.mp4、.avi)。

  • 應用程式類型:包括應用程式檔案(例如.pdf、.doc、.xls)。

配置方法

  • 回應標頭操作:增加

  • 自訂回應標頭名稱:Content-Type。

  • 回應標頭值:text/html。

    image

結果說明:在來源站點發送給CDN節點的響應資訊中聲明內容類型為text/html,再次配置將覆蓋舊值。

樣本二:刪除回應標頭資訊

配置情境

如果您希望刪除回應標頭資訊。

配置方法

  • 回應標頭操作:刪除

  • 自訂回應標頭名稱:Content-Type。

配置

結果說明:刪除要求標頭中的Content-Type資訊,然後返回給使用者。

說明

如果同時完成了樣本一樣本二,那麼會先增加回應標頭Content-Type資訊(響應的內容屬於text/html類型),然後刪除該要求標頭,最終結果為:響應的資源沒有MIME類型限制,直接以最初的類型返回使用者。

常見問題

為什麼已經配置了回應標頭Access-Control-Allow-Origin,但是訪問資源仍提示跨域問題,response header中沒有配置的回應標頭?

如果您在阿里雲CDN中配置了回源回應標頭,如Access-Control-Allow-Origin等,但是在用戶端訪問資源時遇到跨域問題,並且在回應標頭(response header)中沒有看到這些配置的回應標頭,可能原因有以下幾點:

可能的原因

  1. 配置未生效或錯誤:可能是配置沒有正確設定或尚未生效,導致CDN沒有按照預期返回跨域回應標頭。

  2. CDN緩衝:CDN節點可能緩衝了舊的回應標頭資訊,這會導致即使您已更改配置,也仍然返回舊的頭資訊。

  3. 來源站點問題:如果您在CDN上配置了跨域回應標頭,但是來源站點的響應中也包含了跨域回應標頭,並且這些回應標頭與CDN的配置衝突,這可能會導致問題。在這種情況下,需要統一CDN和來源站點的配置。

  4. 瀏覽器緩衝:瀏覽器可能緩衝了舊的響應,導致它並未發起新的請求以擷取更新後的回應標頭。

解決方案

  1. 驗證配置:確認CDN配置已正確設定並且已經生效,特別是跨域相關的回應標頭設定。

  2. 清除CDN緩衝:您可以使用CDN的重新整理功能清空已緩衝的內容,然後再次訪問資源。具體請參見重新整理和預熱資源

  3. 檢查來源站點設定:確認來源站點不會返回與CDN配置衝突的跨域回應標頭。建議將來源站點回源回應標頭與節點回應標頭中的跨域頭設定為也一致,如果配置不一致,可能會導致衝突。

  4. 清除瀏覽器緩衝:清空瀏覽器緩衝,或使用無痕(隱私)模式測試,確保瀏覽器擷取最新的回應標頭。

  5. 聯絡支援人員:如果您嘗試了上述所有方法,但問題仍然存在,可能是CDN服務方面的問題。請聯絡阿里雲CDN的支援人員或提交工單尋求協助。

怎麼檢查來源站點上正確設定了Access-Control-Allow-Origin等回應標頭?

如果您的來源站點為阿里雲伺服器ECS

您需要確保在ECS上啟動並執行Web伺服器或應用程式正確設定了Access-Control-Allow-Origin以及其他CORS(跨源資源共用)相關的回應標頭,可以按照以下步驟進行:

  1. 登入ECS管理主控台訪問您的ECS執行個體。

  2. 檢查Web伺服器跨網域設定。

    跨域回應標頭的配置可能因您使用的Web伺服器或應用程式而異。常見的Web伺服器有Apache、Nginx等。

    Apache

    .htaccess檔案或伺服器設定檔(如httpd.confvhosts.conf)中尋找類似以下內容:

    Header set Access-Control-Allow-Origin "*"

    或者,對於特定的網域名稱:

    Header set Access-Control-Allow-Origin "http://example.com"

    確認這些配置是否存在,並已經正確設定。

    Nginx

    在Nginx設定檔(通常是/etc/nginx/nginx.conf/etc/nginx/sites-available/default)中,找到與您的應用相關的server塊,並檢查如下設定:

    location / {
    	add_header 'Access-Control-Allow-Origin' '*';
    }

    或者,對於特定的網域名稱:

    location / {
    	add_header 'Access-Control-Allow-Origin' 'http://example.com';
    }

    確認這些配置是否存在,並已經正確設定。

  3. 重啟Web伺服器。

    在修改設定檔後,需要重啟Web伺服器以使更改生效。例如對於Apache和Nginx,您可以使用以下命令重啟伺服器。

    • 對於Apache:

      sudo service apache2 restart
    • 對於Nginx:

      sudo service nginx restart
  4. 瀏覽器驗證回應標頭。

    使用開發人員工具的“網路”面板訪問您的資源,檢查是否在回應標頭中看到Access-Control-Allow-Origin。如果看不到,可能是配置沒有生效,或者存在CDN緩衝。

如果您的來源站點為阿里雲Object Storage Service

阿里雲OSS支援跨域資源共用(CORS),您可以通過OSS控制台檢查OSS上是否正確設定了Access-Control-Allow-Origin等回應標頭,可以按照以下步驟進行:

  1. 登入OSS管理主控台

  2. 單擊Bucket 列表,然後單擊目標Bucket名稱。

  3. 在左側導覽列,選擇數據安全 > 跨域設置

  4. 在跨域規則列表中,檢查規則中是否包含Access-Control-Allow-Origin的配置項,並確認其值是否正確。

    • 如果您希望允許任何源訪問,Access-Control-Allow-Origin應設定為*

    • 如果您只想允許特定的源訪問,Access-Control-Allow-Origin應設定為具體的源地址,如https://yourdomain.com

  5. 檢查其他相關跨域頭。

    除了Access-Control-Allow-Origin外,可能還需要檢查以下CORS相關頭部是否已經正確配置:

    • Access-Control-Allow-Methods:指定允許的HTTP方法,如GET,POST,PUT,DELETE等。

    • Access-Control-Allow-Headers:指定允許的自訂要求標頭,如果請求中包含了非標準的頭部欄位。

    • Access-Control-Max-Age:指定預檢請求(OPTIONS)的結果能夠被緩衝的最大時間。

  6. 儲存和測試。

    如果發現設定不正確或需要更新,按照提示修改相應的值,然後儲存更改。儲存後,可能需要等待一段時間讓更改生效。

關於OSS跨網域設定相關詳細說明,請參見跨網域設定

如果在以上步驟中遇到問題或仍然無法解決問題,請聯絡阿里雲CDN的支援人員或提交工單尋求協助。