配置HTTP響應(yīng)頭
節(jié)點(diǎn)HTTP響應(yīng)頭是HTTP響應(yīng)消息頭的組成部分之一,可攜帶特定響應(yīng)參數(shù)并傳遞給客戶端,用來(lái)控制緩存行為。通過(guò)配置節(jié)點(diǎn)HTTP響應(yīng)頭,當(dāng)用戶請(qǐng)求加速域名下的資源時(shí),DCDN返回的響應(yīng)消息會(huì)攜帶您配置的響應(yīng)頭,從而實(shí)現(xiàn)跨域訪問(wèn)等特定功能。
背景信息
HTTP響應(yīng)頭是HTTP協(xié)議中用于控制緩存的一種機(jī)制。當(dāng)客戶端請(qǐng)求一個(gè)資源時(shí),DCDN節(jié)點(diǎn)返回給客戶端的HTTP響應(yīng)頭部信息,它允許客戶端和DCDN節(jié)點(diǎn)在特定條件下緩存響應(yīng)內(nèi)容。
HTTP響應(yīng)頭的配置屬于域名維度的配置,一旦配置生效,便會(huì)對(duì)域名下所有資源的響應(yīng)消息生效。
配置HTTP響應(yīng)頭僅影響客戶端(例如瀏覽器)的響應(yīng)行為,不會(huì)影響到DCDN節(jié)點(diǎn)的緩存行為。泛域名暫不支持配置節(jié)點(diǎn)HTTP響應(yīng)頭。
適用場(chǎng)景
告知客戶端DCDN響應(yīng)文件的資源類型:添加響應(yīng)頭
Content-Type: text/html
告知客戶端DCDN響應(yīng)文件的格式是HTML格式。實(shí)現(xiàn)跨域資源訪問(wèn):當(dāng)用戶請(qǐng)求DCDN上某個(gè)域名的資源時(shí),您可以在CDN返回的響應(yīng)消息中配置響應(yīng)頭Access-Control-Allow-Origin,以實(shí)現(xiàn)跨域訪問(wèn),請(qǐng)參考配置跨域資源共享。
另外,阿里云DCDN還支持按照已配置CORS規(guī)則對(duì)接收到的用戶的跨域請(qǐng)求進(jìn)行校驗(yàn),以實(shí)現(xiàn)更靈活的跨域資源訪問(wèn)控制。
自定義響應(yīng)行為:添加或修改自定義頭部信息,可以根據(jù)業(yè)務(wù)需求調(diào)整客戶端接收到的響應(yīng)內(nèi)容和格式,實(shí)現(xiàn)特定的功能或跟蹤目的。
注意事項(xiàng)
在添加了多條配置的情況下,配置的執(zhí)行順序是按配置列表從上到下的順序逐條執(zhí)行,因此需要注意對(duì)名稱相同的“HTTP響應(yīng)頭”的多個(gè)配置操作將會(huì)疊加,最終結(jié)果可能會(huì)與預(yù)期不符。例如:
配置1:增加HTTP響應(yīng)頭:
cache-control: max-age=3600
配置2:增加HTTP響應(yīng)頭:
cache-control: no-cache
以上兩個(gè)配置疊加的結(jié)果是配置2最終生效
操作步驟
登錄DCDN控制臺(tái)。
在左側(cè)導(dǎo)航欄,單擊域名管理。
在域名管理頁(yè)面,單擊目標(biāo)域名對(duì)應(yīng)的配置。
在指定域名的左側(cè)導(dǎo)航欄,單擊緩存配置。
在自定義HTTP響應(yīng)頭頁(yè)簽,單擊添加,根據(jù)下表中的參數(shù)含義設(shè)置自定義HTTP響應(yīng)頭。
參數(shù)
說(shuō)明
響應(yīng)頭操作
您可以增加、刪除、變更和替換指定的響應(yīng)頭。
自定義響應(yīng)頭參數(shù)
選擇自定義響應(yīng)頭參數(shù)。詳細(xì)信息,請(qǐng)參見(jiàn)響應(yīng)頭參數(shù)。
描述
您自定義的HTTP頭的作用。
自定義響應(yīng)頭名稱
當(dāng)自定義響應(yīng)頭參數(shù)選擇為自定義時(shí),需要配置自定義響應(yīng)頭名稱。自定義響應(yīng)頭名稱要求如下:
由大小寫(xiě)字母、短劃線(-)和數(shù)字組成。
長(zhǎng)度為1~100個(gè)字符。
響應(yīng)頭值
輸入您要設(shè)置的響應(yīng)頭值。詳細(xì)信息,請(qǐng)參見(jiàn)響應(yīng)頭參數(shù)。
是否允許重復(fù)
允許:允許重復(fù)將會(huì)保留源站返回的頭,同時(shí)會(huì)加上一個(gè)同名的頭。
不允許:如果不允許重復(fù),源站返回的頭會(huì)被新配置的同名頭覆蓋。
跨域驗(yàn)證
跨域校驗(yàn)?zāi)J(rèn)為關(guān)閉狀態(tài),只有在響應(yīng)頭操作為“增加”,自定義響應(yīng)頭參數(shù)為“Access-Control-Allow-Origin”的時(shí)候才可以配置。
開(kāi)啟:開(kāi)啟狀態(tài)下DCDN節(jié)點(diǎn)將按以下規(guī)則對(duì)用戶做跨域校驗(yàn),并根據(jù)校驗(yàn)結(jié)果響應(yīng)“Access-Control-Allow-Origin”的值。
關(guān)閉:關(guān)閉狀態(tài)下DCDN節(jié)點(diǎn)不會(huì)校驗(yàn)用戶請(qǐng)求中攜帶的Origin頭,只會(huì)固定響應(yīng)已配置的“Access-Control-Allow-Origin”值。
跨域校驗(yàn)規(guī)則請(qǐng)參見(jiàn)跨域校驗(yàn)規(guī)則。
單擊確定,完成配置。
在自定義HTTP響應(yīng)頭列表中,您也可以單擊修改或刪除,對(duì)當(dāng)前配置的HTTP頭進(jìn)行相應(yīng)操作。
跨域校驗(yàn)規(guī)則
是否允許重復(fù)和跨域驗(yàn)證這兩個(gè)配置項(xiàng)之間存在互斥,是否允許重復(fù)配置為允許的情況下,跨域校驗(yàn)將會(huì)失效。
任意匹配:自定義響應(yīng)頭參數(shù)“Access-Control-Allow-Origin”的值設(shè)置為“*”不論用戶請(qǐng)求里面是否攜帶“Origin”參數(shù),也不論攜帶的“Origin”參數(shù)為何值,都固定返回“Access-Control-Allow-Origin:*”。
精確匹配:自定義響應(yīng)頭參數(shù)“Access-Control-Allow-Origin”的值設(shè)置了單個(gè)或者多個(gè)值(多個(gè)值之間用“,”分隔)。
如果用戶請(qǐng)求頭里攜帶的“Origin”參數(shù)值與被設(shè)置的任意一個(gè)值精確匹配,就會(huì)響應(yīng)對(duì)應(yīng)的跨域頭。
如果都沒(méi)有精確匹配上,則不響應(yīng)跨域頭。
泛域名匹配:自定義響應(yīng)頭參數(shù)“Access-Control-Allow-Origin”的值設(shè)置了泛域名,則會(huì)校驗(yàn)請(qǐng)求頭中Origin值是否能匹配上“Access-Control-Allow-Origin”的泛域名。
配置示例請(qǐng)參見(jiàn)配置跨域資源共享。
響應(yīng)頭參數(shù)
響應(yīng)頭參數(shù) | 說(shuō)明 | 示例 |
自定義 | 支持添加自定義響應(yīng)頭。自定義響應(yīng)頭名稱要求如下:
| Test-Header |
Content-Type | 指定瀏覽器響應(yīng)對(duì)象的內(nèi)容類型。 | text/html |
Cache-Control | 指定客戶端程序請(qǐng)求和響應(yīng)遵循的緩存機(jī)制。 | no-cache |
Content-Disposition | 指定客戶端程序把請(qǐng)求所得的內(nèi)容存為一個(gè)文件時(shí)提供的默認(rèn)的文件名。 | examplefile.txt |
Content-Language | 指定瀏覽器響應(yīng)對(duì)象的語(yǔ)言。 | en-US |
Expires | 指定瀏覽器響應(yīng)對(duì)象的過(guò)期時(shí)間。 | Wed, 21 Oct 2015 07:28:00 GMT |
Pragma | Pragma HTTP 1.0是用于實(shí)現(xiàn)特定指令的響應(yīng)頭,具有通過(guò)請(qǐng)求和響應(yīng)鏈實(shí)現(xiàn)各種效果的功能,可用于兼容HTTP 1.1。 | no-cache |
Access-Control-Allow-Origin | 指定允許的跨域請(qǐng)求的來(lái)源。填寫(xiě)星號(hào)(*)表示全部域名;您也可以填寫(xiě)完整域名,例如 說(shuō)明
|
|
Access-Control-Allow-Methods | 指定允許的跨域請(qǐng)求方法。可同時(shí)設(shè)置多個(gè)方法,多個(gè)方法用英文逗號(hào)(,)分隔。 | POST,GET |
Access-Control-Allow-Headers | 指定允許的跨域請(qǐng)求字段。 | X-Custom-Header |
Access-Control-Max-Age | 指定客戶端程序?qū)μ囟ㄙY源的預(yù)請(qǐng)求返回結(jié)果的緩存時(shí)間,單位為秒。 | 600 |
Access-Control-Expose-Headers | 指定允許訪問(wèn)的自定義頭信息。 | Content-Length |
Access-Control-Request-Method | 發(fā)出請(qǐng)求時(shí)報(bào)頭用于預(yù)檢請(qǐng)求讓服務(wù)器知道哪些HTTP方法在實(shí)際請(qǐng)求時(shí)將被使用。 | POST |
Access-Control-Request-Headers | 發(fā)出請(qǐng)求時(shí)報(bào)頭用于預(yù)檢請(qǐng)求讓服務(wù)器知道哪些HTTP頭在實(shí)際請(qǐng)求時(shí)將被使用。 | X-PINGOTHER |
Access-Control-Allow-Credentials | 該響應(yīng)頭表示是否允許客戶端攜帶驗(yàn)證信息。
| true |
常見(jiàn)問(wèn)題
為什么已經(jīng)配置了響應(yīng)頭Access-Control-Allow-Origin,但是訪問(wèn)資源仍提示跨域問(wèn)題,response header中沒(méi)有配置的響應(yīng)頭?
如果您在阿里云DCDN中配置了回源響應(yīng)頭,如Access-Control-Allow-Origin
等,但是在客戶端訪問(wèn)資源時(shí)遇到跨域問(wèn)題,并且在響應(yīng)頭(response header)中沒(méi)有看到這些配置的響應(yīng)頭,可能原因有以下幾點(diǎn):
可能的原因
配置未生效或錯(cuò)誤:可能是配置沒(méi)有正確設(shè)置或尚未生效,導(dǎo)致CDN沒(méi)有按照預(yù)期返回跨域響應(yīng)頭。
DCDN緩存:DCDN節(jié)點(diǎn)可能緩存了舊的響應(yīng)頭信息,這會(huì)導(dǎo)致即使您已更改配置,也仍然返回舊的頭信息。
源站問(wèn)題:如果您在DCDN上配置了跨域響應(yīng)頭,但是源站的響應(yīng)中也包含了跨域響應(yīng)頭,并且這些響應(yīng)頭與DCDN的配置沖突,這可能會(huì)導(dǎo)致問(wèn)題。在這種情況下,需要統(tǒng)一DCDN和源站的配置。
瀏覽器緩存:瀏覽器可能緩存了舊的響應(yīng),導(dǎo)致它并未發(fā)起新的請(qǐng)求以獲取更新后的響應(yīng)頭。
解決方案
驗(yàn)證配置:確認(rèn)DCDN配置已正確設(shè)置并且已經(jīng)生效,特別是跨域相關(guān)的響應(yīng)頭設(shè)置。
清除DCDN緩存:您可以使用DCDN的刷新功能清空已緩存的內(nèi)容,然后再次訪問(wèn)資源。具體請(qǐng)參見(jiàn)刷新和預(yù)熱資源。
檢查源站設(shè)置:確認(rèn)源站不會(huì)返回與DCDN配置沖突的跨域響應(yīng)頭。建議將源站回源響應(yīng)頭與節(jié)點(diǎn)響應(yīng)頭中的跨域頭設(shè)置為一致,如果配置不一致,可能會(huì)導(dǎo)致沖突。
清除瀏覽器緩存:清空瀏覽器緩存,或使用無(wú)痕(隱私)模式測(cè)試,確保瀏覽器獲取最新的響應(yīng)頭。
聯(lián)系技術(shù)支持:如果您嘗試了上述所有方法,但問(wèn)題仍然存在,可能是CDN服務(wù)方面的問(wèn)題。請(qǐng)聯(lián)系阿里云DCDN的技術(shù)支持或提交工單尋求幫助。