请求标头未作为API调用的参数发送

时间:2017-10-26 04:56:29

标签: api networking cors access-token request-headers

我正在尝试对其他域启用API调用,该域已启用no-cors。

API调用是这样的:

let url = `https:sampleApiUrl?params=xxxx`;
            console.log("hitting dashboard url")
            get(url, token)
                .then((resp) => {
                    console.log("resp", resp)
                })
                .catch((error) => {
                    console.log(error)
                })

此API调用随后调用了“获取”功能。方法:

const get = (url, authToken) => {
return baseFetch(url, 'get', false, authToken).then(response => {
    if (response.status >= 200 && response.status < 300) {
        return response.json();
    } else {
        const error = new Error(response.statusText);
        error.response = response;
        throw error;
    }
});

}

现在,这个get方法调用了一个baseFetch方法:

const baseFetch = (url, verb, body, authToken) => {
const request = {
    method: verb,
    headers: {
        'Accept': 'application/json',
        'Content-Type': 'application/json',
        'X-Requested-With': 'XMLHttpRequest',
        'Access-Control-Allow-Origin': '*',
        'credentials': 'include'
    },
    mode: 'cors'
}

if (authToken){
    // adding x-access-token in the request header
    request.headers['x-access-token'] = authToken;
}

if (body){
    request.body = JSON.stringify(body);
}

return fetch(url, request);

}

现在,当请求此API调用时,我无法看到&#34; x-access-token&#34;填充在浏览器网络调用中。

No x-access-token in request-headers

另外,我不知道为什么我会得到状态代码204作为回应。 从邮递员直接从浏览器调用此API或调用curl请求,返回正确的响应。

谢谢

1 个答案:

答案 0 :(得分:1)

查看图像,您正在查看预飞行OPTIONS方法的标题,而不是GET方法。预先请求是由浏览器生成的,它永远不会有任何自定义标头。因此它的标题中没有x-access-token。