Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/238.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php appgyver的CORS问题?_Php_Angularjs_Cors_Ionic_Appgyver - Fatal编程技术网

Php appgyver的CORS问题?

Php appgyver的CORS问题?,php,angularjs,cors,ionic,appgyver,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

我将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;

我设法弄明白了。不费心完全理解CORS是我的错

然而,AppGyver的家伙们提到,当应用程序在本地测试并部署到云端时,会发送相同的头文件,但情况似乎并非如此

通过查看我的NGINX日志,我注意到在每次请求之前都会使用OPTIONS动词执行“飞行前”检查。部署到云端后,第二个请求被终止。我使用此配置打开访问权限


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


选中滚动至“高级服务选项”,然后选择“服务代理”

您的应用程序是否需要身份验证?我正在对应用程序未经身份验证的部分进行这些测试向服务器发送POST请求时,您得到的https状态码是什么?您可以使用Postman Chrome扩展来测试API。另外,在这里发布带有响应头的请求头,这将有助于了解服务器问题。