我试图使用fetch
api。
首先我创建一个new Headers()
对象:
var oHeaders = new Headers({
'Accept': 'application/json',
'Content-Type': 'application/json',
"X-DocuSign-Authentication": '{"Username":"xxx","Password":"xxx","IntegratorKey":"xxx"}'
})
如果我尝试记录标题,那么在实例化标题后,一切都是正确的。
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 unauthorized
回复。
标题消失的原因是什么?
答案 0 :(得分:2)
为请求设置mode: 'no-cors'
时,浏览器不允许您设置CORS-safelisted request-headers以外的任何请求标头。见the spec requirements:
要将名称/值(名称 / 值)对附加到
Headers
对象(标题),请运行这些步骤进行:
- 否则,如果 guard 为“
醇>request-no-cors
”且名称 / 值不是CORS-safelisted request-header,则返回
在该算法中,return
等同于“返回而不将该标题添加到Headers对象”。