我正在尝试对其他域启用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请求,返回正确的响应。
谢谢
答案 0 :(得分:1)
查看图像,您正在查看预飞行OPTIONS方法的标题,而不是GET方法。预先请求是由浏览器生成的,它永远不会有任何自定义标头。因此它的标题中没有x-access-token。