Axios使用GET调用api成为OPTIONS [英] Axios call api with GET become OPTIONS
问题描述
我使用axios来调用API(在前端)。
我使用方法GET:
从'axios'导入axios;
从'querystring'导入查询字符串;
var url =mydomain.local,
token =blablabla ... blabla;
var configs = {
标题:{
'授权':'承载'+代币,
'代理商':'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方法不允许。方法是OPTIONS,但我使用方法.get()。
原点:null是个问题。原因是:
file:// URL产生一个null,无法通过
echo-back授权。不要尝试从file:// URL执行CORS请求(有关详细信息,请参阅此帖子)
将我的javascript文件放在apache服务器上之后,Origin不是null但我需要将NelmioCorsBundle添加到我的Symfony项目中以允许预检
I use axios for calling API (in front-end). I use the method "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);
});
I got a 405 Method Not Allowed. The method is "OPTIONS" but I use the method ".get()". 405 Method Not Allowed. Method OPTIONS
I test call api with postman and I get 200 OK :
Anyone has an idea ?
Like @Shilly says, OPTIONS method is pre-flight on modern browsers when Preflighted requests conditions (MDN) :
In the response header I had Allow:"GET, HEAD, POST, PUT, DELETE"
.
So OPTIONS
method is not available and need to configure it on in the server (Apache).
I do the change on apache (/etc/apache2/sites-available/000-default.conf) :
Header set Access-Control-Allow-Origin "*"
Header set Access-Control-Allow-Headers "*"
Header set Access-Control-Allow-Methods "PUT, GET, POST, DELETE, OPTIONS"
In Request headers I have :
Origin: "null" is a problem. The cause is :
file:// URLs produce a null Origin which can't be authorized via echo-back. Don't trying to perform a CORS request from a file:// URL (see this post for more details)
After put my javascript file on a apache server, the Origin was not null but I need to add NelmioCorsBundle to my Symfony project to allow preflight
这篇关于Axios使用GET调用api成为OPTIONS的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!