【发布时间】:2017-06-27 12:01:53
【问题描述】:
我使用 axios 来调用 API(在前端)。 我使用“GET”方法:
import axios from 'axios';
import querystring from 'querystring';
var url = "mydomain.local",
token = "blablabla...blabla";
var configs = {
headers: {
'Authorization': 'Bearer ' + token,
'Agency': 'demo0'
}
};
var testapi = axios.create({
baseURL: 'http://api.' + url
});
testapi.get( '/relativeUrl', configs
).then(function (response) {
console.log(response);
}).catch(function (error) {
console.log(error);
});
我得到了一个 405 Method Not Allowed。方法是“OPTIONS”,但我使用方法“.get()”。 405 Method Not Allowed. Method OPTIONS
我用邮递员测试调用 api,我得到 200 OK:
有人有想法吗?
【问题讨论】:
-
OPTIONS 是一个飞行前请求,用于检查您 GET/POST 来自的服务器是否允许您进行 GET/POST。可能是服务器上的某些配置设置阻止了您的 GET。
-
在响应头中,我得到了 Access-Control-Allow-Origin:"*" 和 Allow:"GET, HEAD, POST, PUT, DELETE" 所以我认为 GET 方法是可用的。跨度>
-
也许尝试将 Access-Control-Allow-Origin:" * " 更改为实际来源。并非所有浏览器都允许 ACAO="*"。但这通常会产生不同的错误,所以不确定。对不起,出于其他想法。
-
感谢您的回答。 ACAO="*" 正在为:
testapi.post( '/login_check', querystring.stringify({ _username: 'adherent0', _password: 'adherent0' })工作,所以我认为这不是问题所在。我认为:var configs = { headers: { 'Authorization': 'Bearer ' + token, 'Agency': 'demo0' } };是问题,但我不知道我做错了什么
标签: javascript symfony cors axios preflight