Javascript Access Control Allow Origin仅适用于chrome
我正在使用axios从VueJS前端发出请求。CORS请求执行两个调用,第一个调用是Javascript Access Control Allow Origin仅适用于chrome,javascript,php,request,cors,axios,Javascript,Php,Request,Cors,Axios,我正在使用axios从VueJS前端发出请求。CORS请求执行两个调用,第一个调用是OPTIONS,第二个调用请求的soPOST 它可以在Chrome上完美运行,但如果我使用Safari或Firefox,我只有选项请求。他们不执行POST请求 PHP(我正在使用Phalcon PHP): VueJS: let config = { headers: { 'Access-Control-Allow-Origin' : '*', 'Content-Type': '
OPTIONS
,第二个调用请求的soPOST
它可以在Chrome上完美运行,但如果我使用Safari或Firefox,我只有选项
请求。他们不执行POST
请求
PHP(我正在使用Phalcon PHP):
VueJS:
let config = {
headers: {
'Access-Control-Allow-Origin' : '*',
'Content-Type': 'application/x-www-form-urlencoded'
}
};
axios.post('http://example.com/charge', {
firstname: this.firstname,
lastname: this.lastname,
amount: this.finalAmount * 100,
source: result.token.id
},config)
.then((response) => {
this.loading = false;
this.paid = true;
this.snackbarSuccess = true;
})
.catch((error) => {
this.loading = false;
this.snackbarError = true;
});
Firefox响应标题:
Access-Control-Allow-Credentials
1
Access-Control-Allow-Headers
*
Access-Control-Allow-Methods
GET, POST, PATCH, PUT, DELETE, OPTIONS
Access-Control-Allow-Origin
*
Access-Control-Max-Age
86400
Connection
keep-alive
Content-Length
2
Content-Type
text/html; charset=UTF-8
Date
Wed, 30 Jan 2019 16:40:13 GMT
Server
nginx
Status
200 OK
Request headers (515 B)
Accept
text/html,application/xhtml+xm…ml;q=0.9,image/webp,*/*;q=0.8
Accept-Encoding
gzip, deflate
Accept-Language
en-US,en;q=0.5
Access-Control-Request-Headers
access-control-allow-origin
Access-Control-Request-Method
POST
Connection
keep-alive
Host
example.com
Origin
http://localhost:8080
Referer
http://localhost:8080/payment
User-Agent
Mozilla/5.0 (Macintosh; Intel …) Gecko/20100101 Firefox/65.0
我不明白为什么它在其他浏览器上不起作用,你能帮我吗?查看Safari中的网络面板,然后告诉我们选项请求的结果是什么?@RandyCasburn我更新了我的答案可能会删除一些可选内容以简化代码。例如,从技术上讲,如果值为“application/x-www-form-urlencoded”,则“content type”不需要“allow headers”。也不确定您是否需要JS代码中的“Access Control Allow Origin”:“*”。@Stefan我已删除,但没有任何更改从JavaScript中删除所有标题,您不需要任何标题。您发送的不是URL编码的表单数据,而是将转换为JSON的对象。这是axios的默认设置。
Access-Control-Allow-Credentials
1
Access-Control-Allow-Headers
*
Access-Control-Allow-Methods
GET, POST, PATCH, PUT, DELETE, OPTIONS
Access-Control-Allow-Origin
*
Access-Control-Max-Age
86400
Connection
keep-alive
Content-Length
2
Content-Type
text/html; charset=UTF-8
Date
Wed, 30 Jan 2019 16:40:13 GMT
Server
nginx
Status
200 OK
Request headers (515 B)
Accept
text/html,application/xhtml+xm…ml;q=0.9,image/webp,*/*;q=0.8
Accept-Encoding
gzip, deflate
Accept-Language
en-US,en;q=0.5
Access-Control-Request-Headers
access-control-allow-origin
Access-Control-Request-Method
POST
Connection
keep-alive
Host
example.com
Origin
http://localhost:8080
Referer
http://localhost:8080/payment
User-Agent
Mozilla/5.0 (Macintosh; Intel …) Gecko/20100101 Firefox/65.0