2011-09-29 100 views
8

the HTML4 reference沒有屬性,通過使用錨標記HTTP標頭。如何使用標準錨標籤傳遞HTTP標頭?

我想提出請求使用Accept頭一個特定的文件類型的鏈接。

我看到的卻是簡單地放話,並傳遞一個GET參數的唯一方法。

你可能爲爲什麼我想做到這一點...我打算揭露了一堆方法作爲公共API,服務結果JSON。當使用JavaScript或其他編程語言進行請求時,使用Accept標題來請求特定的響應格式是「正確的方式」。但是,這將意味着,我需要同時容納AcceptGET在我的代碼,它聞起來像邏輯的複製參數。

本主題主要是有爭議的,因爲這樣的鏈接可能無法在瀏覽器書籤......還是......我想知道是否有可能沒有太多的魔法......

+0

使用conneg並不總是「正確的方式」,它在你的工具箱只是一個工具。爲變體創建不同的資源(URL)並隨着生活繼續前進。 –

回答

3

我沒有看到另一種方式比使用GET參數或類似

http://myurl/page?format=json

或更好的擴展

http://myurl/page.json

將覆蓋accept頭(因爲瀏覽器只會發送它的默認 接受標題)。然後你只需要初始化的格式接受標頭映射這樣的(這我不覺得重複的邏輯在所有):

{ 
    "json" : "application/json", 
    "html" : "text/html" 
} 
+0

如果您使用JavaScript,您可以使用任何(接受)標頭髮出任何請求,並且不限於「默認接受標頭」。 – Eddy

+0

這是允許用戶選擇特定變體的完美有效方法。創建不同的資源/ URI以允許變體選擇沒有任何問題。服務器驅動的內容協商並不總是正確的方式。 –

0

你不能。

我打算公開一系列方法作爲公共API,服務結果爲JSON。當使用JavaScript或其他編程語言進行請求時,使用Accept標題來請求特定的響應格式是「正確的方式」。但是,這將意味着,我需要同時容納Accept頭和GET參數在我的代碼,它聞起來像邏輯的重複。

如果我的理解正確無誤,您不必這樣做。瀏覽器已經提供了一個Accept標題。

+1

授予。但我在問是否有可能重寫它。 – exhuma

0

嗯,看來如果你的成績是JSON,你會被髮送/接收從腳本無論如何,它可以提供任何你想要的標題。只需讓你的鏈接調用一個腳本函數,你就完成了。

+0

使用'JSON'只是一個例子。在我的情況下,我想公開一個列表,可以通過'PDF','HTML'或'JSON'訪問,其中'PDF'可以通過鏈接訪問。 – exhuma