2011-09-29 58 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