fetch()发送小写标题键

时间:2016-01-07 13:31:13

标签: javascript

我正在编写用于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()在我提供标题时发送标题吗?

2 个答案:

答案 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作为伪伪代码,因为我们传入了一些在模板文字中计算的函数参数。