How would you pass HTTP Headers using a standard anchor tag?
According to the HTML4 reference there's no attribute to pass on HTTP headers using the anchor tag.
I would like to offer a link requesting for a specific file type using the Accept
header.
The only way I c开发者_StackOverflow社区an see is simply let it be, and pass a GET
parameter.
You may as why I would want to do this... I intend to expose a bunch of methods as a public API, serving the results as JSON
. And when doing requests using JavaScript, or another programming language, using the Accept
header to request a specific response format is "The Right Way" to do it. But that would mean that I need to accommodate both the Accept
header and the GET
parameter in my code, which smells like a duplication of logic.
This topic is largely debatable, as such links may not be possible to bookmark in the browser... still... I'd like to know if it was possible without too much magic...
I don't see another way than using the GET parameter or an extension like
http://myurl/page?format=json
or better
http://myurl/page.json
Which overrides the accept header (since the browser will only send it's default accept header). Then you just need to initialize a format to accept header mapping like this (which I don't find duplicate logic at all):
{
"json" : "application/json",
"html" : "text/html"
}
You can't.
I intend to expose a bunch of methods as a public API, serving the results as
JSON
. And when doing requests using JavaScript, or another programming language, using theAccept
header to request a specific response format is "The Right Way" to do it. But that would mean that I need to accommodate both theAccept
header and theGET
parameter in my code, which smells like a duplication of logic.
If I understand you correctly, you don't have to do this anyway. Browsers already supply an Accept
header.
Hmm, seems like if your results are JSON, you will be sending / receiving from script anyway, which can provide any header you want. Just have your link call a script function and you're done.
精彩评论