javascript - 可以获取对象作为标题吗?

标签 javascript fetch-api

我试图了解如何根据规范使用 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 a Headers object or ByteString.

(编辑:我现在已经编辑了 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/

相关文章:

javascript - 上传多个文件时如何获取html标签id?

javascript - React.js 搜索栏始终获取相同的内容

javascript - 如何使用 fetch() 和 WhatWG 流获取文件上传进度

javascript - 获取 Set-Cookie header 以设置 CSRF Coo​​kie 时避免 HTTP 403 错误的最佳方法

javascript - 如何将数据从 api 移动到 statehook?

javascript - Fetch 的 Response.body block 是否对应于 HTTP block ?

javascript - 如何将导航栏移动到另一个位置

javascript - canvas.toDataURL() 抛出安全异常,尽管图像是本地的

javascript - 我怎样才能在我的 Highcharts 饼图中获得一个字体超棒的图标数据标签?

javascript - 云函数冷启动期间,node_modules 文件夹的大小是否重要?