fetch 可以得到 object as headers 吗?
Can fetch get object as headers?
我试图了解如何根据规范使用 whatwg fetch
。具体来说,如果我能做到这一点,根据规范。
fetch("https://example.org", {headers:{'Content-Type', 'image/jpeg'}})
这个用github's fetch polyfill其实是可以的,也就是按照他们的话说,"as closely as possible to the standard Fetch specification".
当我阅读MDN documentation时,我阅读了这篇
headers
: Any headers you want to add to your request, contained within a Headers
object or ByteString
.
(编辑:我现在已经编辑了 MDN 页面,因此他们不再直接通过 ByteString
谈论 Headers
初始化。)
也就是说普通的object是不允许的
但是,这个文档并不完美,所以我查看了以他们通常的冗长方式编写的规范,我发现:
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)
如果我没看错,这意味着 object 实际上可以使用(而 OpenEndedDictionary
是……只是一个 object)。我理解正确吗?
(我要补充一点,根据我的实验,Firefox 和 Chrome 都接受 header object。)
我也看不到任何有关 headers
可以直接从 ByteString
实例化的信息,正如 MDN 所建议的那样。
我也感兴趣的是不同的实现实际上现在接受什么。
您可以尝试使用此代码:
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。我没有在 the browsers currently supporting Fetch API.
的 Opera 中尝试
顺便说一下,MDN 不建议从 ByteString
实例化。实际上,它是说 JavaScript.
中的 ByteString
is just String
我试图了解如何根据规范使用 whatwg fetch
。具体来说,如果我能做到这一点,根据规范。
fetch("https://example.org", {headers:{'Content-Type', 'image/jpeg'}})
这个用github's fetch polyfill其实是可以的,也就是按照他们的话说,"as closely as possible to the standard Fetch specification".
当我阅读MDN documentation时,我阅读了这篇
headers
: Any headers you want to add to your request, contained within aHeaders
object orByteString
.
(编辑:我现在已经编辑了 MDN 页面,因此他们不再直接通过 ByteString
谈论 Headers
初始化。)
也就是说普通的object是不允许的
但是,这个文档并不完美,所以我查看了以他们通常的冗长方式编写的规范,我发现:
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)
如果我没看错,这意味着 object 实际上可以使用(而 OpenEndedDictionary
是……只是一个 object)。我理解正确吗?
(我要补充一点,根据我的实验,Firefox 和 Chrome 都接受 header object。)
我也看不到任何有关 headers
可以直接从 ByteString
实例化的信息,正如 MDN 所建议的那样。
我也感兴趣的是不同的实现实际上现在接受什么。
您可以尝试使用此代码:
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。我没有在 the browsers currently supporting Fetch API.
的 Opera 中尝试顺便说一下,MDN 不建议从 ByteString
实例化。实际上,它是说 JavaScript.
ByteString
is just String