Ionic + Angular发出的POST请求返回状态码404。
Ionic + Angular发出的POST请求返回状态码404。
我刚刚更新了Angular + Ionic的新版本,但处理远程请求的方法停止工作,并始终返回404响应。\n请求如下:\n请求方法:POST\n状态码:404 Not Found(来自缓存)\n请求头:\nAccept: application/json, text/plain, */*\nContent-Type: text/plain\nOrigin: file://\nUser-Agent: Mozilla/5.0 (Linux; Android 4.4.2; Lenovo Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0 Mobile Safari/537.36\n请求载荷:\n{,...}\n处理远程请求的代码如下:\n//设置传输凭据\n$http({\n method: \'POST\',\n url: $scope.remoteUrl,\n data: {img_base64: \"/9j/4AAQSkZ\"},\n headers: \'application/json\',\n timeout: 10000\n //成功响应\n}).success(function(data, status, headers, config) {\n //成功\n}).error(function(data, status, headers, config) {\n //错误\n});\n我尝试使用以下主题解决此问题:\nAngularJs $http.post() does not send data\nAngular + Ionic Post request getting 404 not found\n但是没有成功。\n服务器端处理请求的方式如下:\n$inputJSON = file_get_contents(\'php://input\');\n$input= json_decode( $inputJSON, TRUE ); //将JSON转换为数组\n如果我尝试使用Postman或Curl发送请求,一切似乎都正常工作。\nIonic信息:\nNode版本:v0.12.2\nCordova CLI版本:5.0.0\nIonic CLI版本:1.3.22\nXcode版本:Xcode 6.3.1 Build version 6D1002\nios-sim版本:未安装\nios-deploy版本:未安装\nAngularJS版本:\n\"version\": \"1.3.13\"\n请问我该如何解决这个问题?\n非常感谢任何建议。
问题出现的原因是没有正确安装插件并在index.html中配置了CSP,解决方法是先移除插件,然后再重新安装插件。
在Ionic和Angular中进行POST请求时,我遇到了很多困难,但是解决的关键是安装插件、在index.html中配置内容安全策略(CSP),然后再移除插件,再重新安装插件。以下是具体操作步骤:
1. 首先,确保已正确安装所需的插件。可以使用以下命令安装插件:
npm install @ionic-native/http
2. 在index.html文件中配置CSP。找到以下代码段:
将其替换为以下内容:
这将允许应用程序通过HTTP进行连接。
3. 接下来,移除插件并重新安装。在终端中使用以下命令:
ionic cordova plugin remove cordova-plugin-advanced-http npm uninstall @ionic-native/http
然后,再次使用以下命令安装插件:
ionic cordova plugin add cordova-plugin-advanced-http npm install @ionic-native/http
这将确保插件正确安装并与应用程序兼容。
通过按照以上步骤操作,应该能够解决Ionic和Angular中进行POST请求时返回状态404的问题。
Ionic + Angular POST请求返回状态404问题的原因可能是新版本的Cordova中的安全策略导致的。解决方法是安装Cordova的白名单插件,并在index.html中添加内容策略作为meta标签。具体的解决步骤如下:
1. 安装Cordova的白名单插件:
cordova plugin add cordova-plugin-whitelist
2. 在index.html中添加内容策略的meta标签,可以使用自己的主机或'*'来接受所有请求:
<meta http-equiv="Content-Security-Policy" content="default-src 'self' yourhost.com ws://localhost:35729 data: gap: https://ssl.gstatic.com; style-src 'self' 'unsafe-inline'; media-src *;script-src 'self' localhost:35729 'unsafe-eval' 'unsafe-inline';">
3. 需要根据实际情况添加自己的内容策略,包括协议和端口。如果不添加meta标签,会收到白名单插件的警告。
4. 重新构建应用,问题应该会解决。
这个问题可能是由于使用较新版本的Phonegap Build构建时导致的。在其他设备上应用正常工作,但在某个特定的Android设备上无法正常工作。感谢这位作者的分享,解决了我很多困扰。
如果上述方法不起作用,可以尝试重新安装cordova-plugin-whitelist插件。更多信息可以查看插件的readme文件。还可以参考forum.ionicframework.com上的讨论。