我将Angular与AppGyver套件一起用于一个简单的CRUD应用程序。在我部署到云之前,我的GET和POST请求在我的远程API (PHP REST Server)上运行良好。从那时起,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;发布于 2015-04-23 04:50:19
我设法弄明白了这一点。没有费心去完全理解CORS是我的错。
然而,AppGyver的人提到,当应用程序在本地测试并部署到云中时,会发送相同的报头,但情况似乎并非如此……
通过查看我的NGINX日志,我注意到在使用OPTIONS动词的每个请求之前都会执行一次“预检”检查。一旦部署到云上,第二个请求就终止了。我用这个配置打开了访问
https://michielkalkman.com/snippets/nginx-cors-open-configuration.html
发布于 2015-04-23 13:05:18
如果您正在为您的REST应用程序使用实时服务器,并且您遇到了CORS问题。我建议您使用Ionic的代理服务器来完成所有请求。你将不会运行在任何选项,请求等。
检查this滚动到“高级服务选项”,然后到“服务代理”
https://stackoverflow.com/questions/29784670
复制相似问题