我试图了解如何根据规范使用 whatwg fetch
。具体来说,如果我能根据规范做到这一点。
fetch("https://example.org", {headers:{'Content-Type', 'image/jpeg'}})
这实际上是可能的 github's fetch polyfill ,也就是说,用他们的话说,“尽可能接近标准的 Fetch 规范”。
当我阅读 MDN documentation , 我读过这个
headers
: Any headers you want to add to your request, contained within aHeaders
object orByteString
.
(编辑:我现在已经编辑了 MDN 页面,所以他们不再直接通过 ByteString
谈论 Headers
初始化。)
这意味着普通对象是不允许的。
但是,这个文档并不完美,所以我查看了以他们通常的冗长方式编写的规范,我发现:
https://fetch.spec.whatwg.org/#request-class
Request class
Constructor(RequestInfo input, optional RequestInit init) dictionary RequestInit { ... HeadersInit headers; ... } typedef (Headers or sequence<sequence<ByteString>> or OpenEndedDictionary<ByteString>) HeadersInit;
OpenEndedDictionary is a future IDL construct. Expect it to be used as such:
var meta = { "Content-Type": "text/xml", "Breaking-Bad": "<3" } new Headers(meta)
如果我没看错,这意味着该对象实际上可以使用(并且 OpenEndedDictionary
是……只是一个对象)。我的理解正确吗?
(我要补充一点,根据我的实验,Firefox 和 Chrome 都接受 header 对象。)
我也看不到有关 headers
的任何信息,如 MDN 所建议的那样,可以直接从 ByteString
实例化。
我还感兴趣的是不同的实现实际上现在接受什么。
最佳答案
你可以试试这个代码:
var r = new Request('test.html', {
headers: {
'Custom-Header': 'test',
'Content-Type': 'image/jpeg'
}
});
for (h of r.headers) alert(JSON.stringify(h));
它适用于 Firefox 和 Chrome。我没有在 Opera 中尝试 the browsers currently supporting Fetch API .
顺便说一下,MDN 不建议从ByteString
实例化。实际上,它是说 ByteString
is just String
在 JavaScript 中。
关于javascript - 可以获取对象作为标题吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35296664/