我正在编写用于Atom Electron的HTTP API库。它基于fetch
。服务器不受我的控制,但是用PHP编写,我可以看到它以区分大小写的方式检查标题。
我的代码类似于:
const headers = new Headers();
headers.append('Authorization', `Bearer ${key}`);
const init = {
method: 'GET',
headers: headers
}
const req = new Request(baseUrl + '/items?format=json');
return fetch(req, init);
请求被拒绝且出现403 FORBIDDEN
错误。当我在Electron Newtork面板中查看请求时,请求标头已存在,但Authorization
已成为authorization
。
我知道fetch()
只是遵循HTTP标准,但有一种简单的方法让fetch()
在我提供标题时发送标题吗?
答案 0 :(得分:6)
目前,抓取将toLowercase()
所有标头。 (这里有一些关于可选禁用的讨论https://github.com/whatwg/fetch/issues/304。
目前,您可能需要将http://api.jquery.com/jquery.ajax/与header
选项一起使用。
答案 1 :(得分:-1)
使用自己获取并执行类似的操作,我们按照以下方式执行...
const GLOBALS = require('./Globals');
const HEADERS = {
'Accept': 'application/json',
'Content-Type': 'application/json'
};
const resourceURL = '/some/endpoint'
const body = '';
var request = new Request(`${GLOBALS.API_ENDPOINT}${resourceURL}`, {
method: 'GET',
headers: new Headers(Object.assign(HEADERS, {'Authorization': `JWT ${token}`})),
body: body ? JSON.stringify(body) : null
});
return fetch(request)
.then(res => consume)
将is作为伪伪代码,因为我们传入了一些在模板文字中计算的函数参数。