自定义标头未添加到请求对象

3

我正在尝试使用fetch API。

首先,我创建了一个new Headers()对象:

var oHeaders = new Headers({
    'Accept': 'application/json',
    'Content-Type': 'application/json',
    "X-DocuSign-Authentication": '{"Username":"xxx","Password":"xxx","IntegratorKey":"xxx"}'
})

在headers实例化之后,如果我尝试记录headers,一切都是正确的。
oHeaders.forEach(function(v){console.log(v)})
//logs: 2 application/json {"Username":"xxx","Password":"xxx","IntegratorKey":"xxx"}

我创建了一个 Request 对象:

var oReq = new Request('https://eu.docusign.net/restapi/v2/login_information', {
  method: 'GET',
  headers: oHeaders,
  mode: 'no-cors',
});

如果我尝试记录请求对象的标头,只有 accept 标头会出现。

oReq.headers.forEach(function(v){console.log(v)})
//logs: application/json

如果我尝试调用fetch(oReq),我会收到401未授权的响应。

是什么导致了标题消失?


那么您是在运行在 https://eu.docusign.net/ 下的脚本中进行测试吗?如果不是,为什么要设置 mode: 'no-cors' - CBroe
我必须使用 no-cors,因为需要 Access-Control-Allow-Origin。请求必须从不同的服务器客户端发出。即使没有 no-cors,我也尝试过检查头文件,但头文件仍然会消失。 - lacexd
这没有意义。因为你正在向不同的域发出请求,所以它需要启用CORS。 - CBroe
1个回答

3
当您设置请求的mode: 'no-cors'时,浏览器不允许您设置除CORS安全请求头之外的任何请求头。请参见规范要求

要将名称/值(name/value)对附加到Headers对象(headers),请执行以下步骤:

  1. 否则,如果guard为“request-no-cors”,并且name/value不是CORS安全请求头,则返回。
在该算法中,return表示“不添加该标头到Headers对象并返回”。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接