全部產品
Search
文件中心

CDN:修改入站回應標頭

更新時間:Jul 04, 2026

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重新導向。

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

注意事項

  • 在添加了多條配置的情況下,執行順序按配置列表從上到下,因此需要注意多個配置操作將會疊加,最終結果可能會與預期不符。以下例子中配置2最終生效:

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

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

  • 引用規則條件時,按所關聯規則條件的優先順序匹配,而非按功能自身的配置順序匹配。

操作步驟

  1. 登入CDN控制台

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

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

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

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

  6. 單擊添加

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

    重要

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

    增加回應標頭參數

    配置項

    樣本

    說明

    响应头操作

    增加

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

    自定义响应头参数

    自訂回源回應標頭

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

    自定义响应头名称

    x-code

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

    响应头值

    key1

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

    key1,key2

    是否允许重复

    允許

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

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

    規則條件

    不使用

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

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

    • 若需新增或編輯規則條件,請在規則引擎中進行管理。

    刪除回應標頭參數

    配置項

    樣本

    說明

    响应头操作

    刪除

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

    自定义响应头参数

    自訂回源回應標頭

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

    自定义响应头名称

    x-code

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

    規則條件

    不使用

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

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

    • 若需新增或編輯規則條件,請在規則引擎中進行管理。

    變更回應標頭參數

    配置項

    樣本

    說明

    响应头操作

    變更

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

    自定义响应头参数

    自訂回源回應標頭

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

    自定义响应头名称

    x-code

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

    响应头变更为

    key1,key3

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

    規則條件

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

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

    • 若需新增或編輯規則條件,請在規則引擎中進行管理。

    替換回應標頭參數

    配置項

    樣本

    說明

    响应头操作

    替換

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

    自定义响应头参数

    自訂回源回應標頭

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

    自定义响应头名称

    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。

    其中是否允許重複選擇不允許規則條件選擇不使用,然後單擊確定

結果說明:在來源站點發送給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. 清除瀏覽器緩衝:清空瀏覽器緩衝,或使用無痕(隱私)模式測試,確保瀏覽器擷取最新的回應標頭。

怎麼檢查來源站點上正確設定了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 加速頁面出現亂碼如何處理?

如果 CDN 加速後的頁面出現亂碼,通常是因為來源站點返回的 Content-Type 回應標頭未正確指定字元編碼。可以通過以下步驟解決:

  1. 登入域名管理控制台,找到目標網域名稱。

  2. 在網域名稱詳情頁左側導覽列中,單擊回源配置,通過「修改出站回應標頭」功能,為對應的檔案路徑添加回應標頭規則,將 Content-Type 設定為 text/plain; charset=utf-8

  3. 配置完成後,前往重新整理和預熱頁面,重新整理該路徑下的緩衝資源,使新規則生效。

說明

如果希望確保該檔案不被緩衝(避免後續更新不及時),可以在缓存配置中為該檔案的對應路徑(如 /llms.txt)單獨設定緩衝到期時間為 0 秒。

全域強制設定 Content-Type 為 video/mp4 是否會影響其他資源(片)?如何精準配置?

如果對整個網域名稱全域設定 Content-Typevideo/mp4,確實會影響該網域名稱下的所有資源類型,包括圖片、CSS、JS 等檔案。為了避免影響其他檔案,建議通過以下方式進行精準配置:

  1. 按路徑匹配:在「修改入站回應標頭」規則中,通過回源配置中的規則條件,指定僅對視頻路徑(如 /vod-cd20e3/.mp4 尾碼)生效。

  2. 使用條件判斷:CDN 控制台支援根據請求尾碼或 Header 條件設定回應標頭,可限定僅對 .mp4 檔案返回 Content-Type: video/mp4

通過上述方式,可以僅對視頻檔案修改 Content-Type,而不會干擾圖片等其他資源類型。

配置回應標頭控制視頻下載或預覽不生效怎麼辦?

可以通過缓存配置中的「修改出站回應標頭」功能配置 Content-Disposition 回應標頭來控制視頻的下載或預覽行為:

  • 設定為 attachment; filename='video.mp4' 時,使用者訪問該資源將觸發下載。

  • 設定為 inline 時,資源將在瀏覽器中直接預覽。

如果配置不生效,請檢查以下事項:

  1. 規則引擎匹配條件:確保規則的匹配條件針對的是 URI 路徑(如包含 /video-origin/20260414),而非僅匹配查詢參數(query string)。規則引擎通過識別使用者請求中的路徑資訊來決定配置是否生效。

  2. 緩衝問題:如果視頻檔案已被 CDN 緩衝,舊的回應標頭可能仍然生效。請前往重新整理和預熱頁面重新整理該路徑的緩衝,使新配置生效。

JS 檔案被當成 text/html 錯誤處理,首次重新整理必現、第二次正常的原因及解決方案?

問題原因

來源站點首次返回 JS 檔案時,Content-Type 回應標頭可能被錯誤設定為 text/html。CDN 將該錯誤類型緩衝後,首次訪問時瀏覽器會按照 text/html 解析 JS 檔案,導致亂碼或執行異常。第二次訪問時,由於來源站點已修正 Content-Type 或 CDN 重新回源擷取了正確類型,頁面恢複正常。

解決方案

  1. 在 CDN 控制台的「修改入站回應標頭」中配置規則,將 JS 檔案的 Content-Type 強制替換為 application/javascript

  2. 配置完成後,前往重新整理和預熱頁面重新整理該 JS 檔案的緩衝,使新規則立即生效。

修改入站回應標頭配置是否支援針對 JS 檔案設定?設定後是否會影響其他檔案類型?

支援。可以在「修改入站回應標頭」中只針對 JS 檔案設定 Content-Typeapplication/javascript,不會影響其他檔案類型。

具體方法:在配置規則時,通過規則條件匹配 .js 尾碼,使該回應標頭修改規則僅對 JS 檔案生效。這樣既能確保 JS 檔案的 MIME 類型正確,又不會干擾 CSS、圖片等其他資源類型。

修改入站回應標頭配置是否可用於確認 CDN 檔案丟失或同步狀態?

不可以。「修改入站回應標頭」的作用是修正或強制指定特定檔案類型的 MIME 類型,以解決因來源站點首次返回錯誤類型導致的緩衝異常問題。該功能不涉及檢測 CDN 是否丟失檔案,也不用於判斷檔案的同步狀態。

如果需要排查 CDN 檔案是否存在或同步狀態異常,建議使用以下方法:

  • 通過 CDN 控制台的重新整理和預熱功能主動重新整理目標檔案,觸發 CDN 回源驗證檔案是否存在。

  • 檢查來源站點側檔案是否正常可訪問。

  • 查看 CDN 日誌,確認回源狀態代碼是否正常。