自定义标头未添加到请求对象
我正在尝试使用 fetch
api.
I'm trying to use fetch
api.
首先我创建一个 new Headers()
对象:
First i create a new Headers()
object:
var oHeaders = new Headers({
'Accept': 'application/json',
'Content-Type': 'application/json',
"X-DocuSign-Authentication": '{"Username":"xxx","Password":"xxx","IntegratorKey":"xxx"}'
})
如果我尝试记录标题,则在实例化标题后一切都正确.
After headers is instantiated if i try to log headers everything is correct.
oHeaders.forEach(function(v){console.log(v)})
//logs: 2 application/json {"Username":"xxx","Password":"xxx","IntegratorKey":"xxx"}
我创建了 Request 对象:
the i create the Request object:
var oReq = new Request('https://eu.docusign.net/restapi/v2/login_information', {
method: 'GET',
headers: oHeaders,
mode: 'no-cors',
});
如果我尝试记录请求对象的标头,则只有 accept
标头会在那里.
If i try to log the headers of the request object only the accept
header will be there.
oReq.headers.forEach(function(v){console.log(v)})
//logs: application/json
如果我尝试 fetch(oReq)
我得到 401 未授权
响应.
If i try to fetch(oReq)
i get 401 unauthorized
response.
是什么让标题消失了?
推荐答案
当您为请求设置 mode: 'no-cors'
时,浏览器将不允许您设置任何其他请求标头比 CORS-safelisted request-header.请参阅规范要求:
When you set mode: 'no-cors'
for a request, browsers won’t allow you to set any request headers other than CORS-safelisted request-headers. See the spec requirements:
将名称/值 (name/value) 对附加到 Headers
对象 (headers),运行以下步骤:
To append a name/value (name/value) pair to a
Headers
object (headers), run these steps:
- 否则,如果 guard 是 "
request-no-cors
" 并且 name/value 不是CORS-safelisted request-header,返回.
- Otherwise, if guard is "
request-no-cors
" and name/value is not a CORS-safelisted request-header, return.
在该算法中,return
等同于在不将该标头添加到 Headers 对象的情况下返回".
In that algorithm, return
equates to "return without adding that header to the Headers object".
相关文章