appgyver的CORS问题?

时间:2015-04-21 22:59:24

标签: php angularjs cors ionic appgyver

我使用Angular与AppGyver套件一起使用简单的CRUD应用程序。我的GET和POST请求对我的远程API(PHP REST服务器)工作正常,直到我部署到云端。从那里,PHP实际上从未获得POST数据。

我在NGINX中使用自定义标头打开CORS访问

在我的服务器上运行tcpdump我发现在部署到云之前和之后发送的标头存在这些差异

IOS SIMULATOR::: WORKS----
Content-Length: 26
Accept: application/json, text/plain, */*
Content-Type: application/json


DEPLOY TO CLOUD::: DOESN'T------
Access-Control-Request-Method: POST
Accept: */*
Access-Control-Request-Headers: accept, origin, content-type
Content-Length: 0

我猜它是一个我无法看到的CORS问题......非常令人沮丧!

(也尝试使用签名的SSL证书而不是直接的HTTP,无需更改)

我的NGINX标题:

add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
add_header 'Access-Control-Allow-Headers' 'Key,accept,origin,content-type,X-Requested-With,steroidsAppId,steroidsApiKey,DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';

add_header "Access-Control-Request-Method" "POST";
add_header "Access-Control-Allow-Credentials" true;

2 个答案:

答案 0 :(得分:0)

我设法解决了这个问题。没有完全理解CORS是我的错。

然而,AppGyver的人员提到,当应用程序在本地进行测试并部署到云端时,会发送相同的标头,但这似乎并非如此......

通过观察我的NGINX日志,我注意到在使用OPTIONS动词的每个请求之前正在执行“预检”检查。部署到云后,第二个请求被终止。我使用此配置打开访问

https://michielkalkman.com/snippets/nginx-cors-open-configuration.html

答案 1 :(得分:0)

如果您正在为REST应用程序使用实时服务器,并且遇到CORS问题。我建议你使用Ionic的代理服务器来完成你的所有请求。您不会在任何OPTION请求等中运行。

检查this滚动到"高级服务选项" ,然后到" Service Proxies"