【发布时间】:2020-07-08 04:18:16
【问题描述】:
有 2 个 api。方法 POST-Login 方法 GET-data。并且服务器启用了cors。登录 api 工作正常,但是当使用 GET 方法调用 api 时失败。 代码:
->api 登录-POST
const login = async (email, password) => {
console.log("in auth service");
const userDetail = {
username:email,
// email,
password
};
try {
// unsetHeadersWithUserToken();
const afterSuccess = await api.post(apiDetail.auth.url, userDetail);
if (afterSuccess) {
return afterSuccess.data;
}
} catch (error) {
console.log("error: ", error.response.error);
if (error.category === 'User Permissions') {
// forceLogout();
}
throw error;
}
};
->api-GET
try{
// console.log("url : ", apiDetail.partnerLocations.url);
let token = sessionStorage.getItem('token');
setHeadersWithUserToken(token);
let apiResponse = await api.get(apiDetail.partnerLocations.url);
return apiResponse;
}catch(error){
console.info('##### demand-response.js:11 #####');
console.info('========================= Start =========================');
console.error('error = ', JSON.stringify(error));
// console.log(error.response.data)
console.info('========================== End ==========================');
throw error;
}
->axios 调用
import axios from 'axios';
import { environment } from '../../utils/constants';
let api;
let apiDetail = {
baseURL: environment.baseURL,
headers: {
'Content-Type': 'application/json',
'Access-Control-Allow-Origin': '*'
}
};
const setAPI = apiDetail => {
api = axios.create(apiDetail);
};
setAPI(apiDetail);
const setHeadersWithUserToken = token => {
api.defaults.headers.common['Authorization'] = token;
};
export {
api,
setHeadersWithUserToken,
};
【问题讨论】:
-
您的请求标头中似乎有
access-control-allow-origin: *。它需要在您的服务器响应标头中。 -
@BryanElliott 为此使用 chrome 扩展,收到此错误“对预检请求的响应未通过访问控制检查:它没有 HTTP ok 状态”
-
是的,服务器响应需要在标头中有
access-control-allow-origin: *。 (响应头,不是请求头)
标签: javascript cors axios