当前位置: 首页 > 面试题库 >

Ionic + Angular POST请求返回状态404

凤柏
2023-03-14
问题内容

我刚刚更新了Angular + Ionic的新版本,并且处理远程请求的方法停止工作并始终返回404响应。

请求如下:

Request Method:POST
Status Code:404 Not Found (from cache)
Request Headersview source
Accept:application/json, text/plain, */*
Content-Type:text/plain
Origin:file://
User-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
Request Payloadview source
{,…}

处理远程请求的方法的代码如下:

    // set transfer credentials
                $http({
                    method : 'POST',
                    url : $scope.remoteUrl,
                    data: {img_base64: "/9j/4AAQSkZ"},
                    headers: 'application/json',
                    timeout: 10000
                    // success response
                }).success(function(data, status, headers, config) {
                    //SUCESSS
                    } else {
                    //PROCESSING ERROR                     
}

                    // error response
                }).error(function(data, status, headers, config) {
                    // ERROR
                });

但是没有运气。

服务器端通过这种方式处理请求:

$inputJSON = file_get_contents('php://input');
    $input= json_decode( $inputJSON, TRUE ); //convert JSON into array

如果我试图使用邮递员或卷曲发送请求,一切似乎都在工作。

离子信息:

Node Version: v0.12.2
Cordova CLI: 5.0.0
Ionic CLI Version: 1.3.22
Xcode version: Xcode 6.3.1 Build version 6D1002 
ios-sim version: Not installed
ios-deploy version: Not installed

AngularJS版本:

"version": "1.3.13",

我该如何解决?

非常感谢您的任何建议


问题答案:

哼,我只是遇到了同样的问题:标头表明它已经被拿走了from cache……但是实际上,它似乎与新版本的Cordova中的新安全策略有关。

这是我解决的方法:

我安装了Cordova的白名单插件:

cordova plugin add cordova-plugin-whitelist

然后,将您的内容策略添加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';">

default-src用于一般要求;该ws://localhost:35729主机被用于活重装ionic serve

script-src 用于安全脚本执行

unsafe-inline并且unsafe-eval是角钢正常工作所必需的。

data: gap: https://ssl.gstatic.com 仅在iOS上使用。

self表示index.html文件的当前主机。

您必须添加自己的才能使请求生效。如果它们不是标准的,请不要忘记添加协议和端口

如果不想,可以跳过meta标签,但是白名单插件会给您很多警告。

有关如何在插件的自述文件中进行配置的更多信息。

然后重建您的应用程序,它应该可以再次运行。



 类似资料:
  • 我刚刚更新了Angulal+Ionic的新版本,处理远程请求的方法停止工作,返回总是404响应。 请求如下: 请问我该怎么解决? 多谢你的忠告

  • 我有一个springboot/openapi应用程序。不依赖Spring Security性。通过swagger启动POST请求时,返回的状态为403。请求未到达控制器类。然而,Get请求确实有效,并返回状态200。 配置如下 application.yaml 403状态的原因可能是什么? 控制器

  • 我正在做一个新项目,我想实现一个“等到网站打开”功能,如果http://switch-check.cf/index.php打开,然后继续。 现在,在我的帮助下。htaccess和php我尽了最大的努力。禁止访问php文件。因此,如果你试图访问我提到的网页,你应该得到一个 403拒绝访问 因此,我使用urllib(也尝试了请求)查看网站是否已打开或仍处于禁止访问状态然而,无论我尝试什么,我总是得到2

  • 嗨,我是Laravel的新手,我正在尝试用ajax表单提交构建一个登录表单。 我抄了 如果我从VerifyCsrfToken检查中排除它,我的代码工作完全正常。但是我确实希望令牌验证有效。 我读过多篇关于csrf令牌的帖子,尝试过,但仍然返回状态码419。 抱歉下面的长代码,但他们在这里(我知道我没有做任何关于设置会话和东西,请忽略现在因为代码返回419状态) 路线/web.php login.j

  • 将Spring启动从版本 1.5 更新到 2.7 后,POST 请求返回状态 400。 我有饲料仓库: SpringDataRest为他生成默认控制器,所以我可以在:localhost:8080/api/feeds上发出请求 馈电等级: 资源类: 对象映射器 Bean: 如果我使用有效负载执行保存请求(POST localhost:8080/api/feeds ): 我收到状态 400 并出现错误

  • 我希望根据响应对象错误动态返回HTTPStatus代码,如400、400、404等。我被提到这个问题--使用Spring3RESTful以编程方式更改http响应状态,但没有帮助。 我有一个带有方法的控制器类 是一个类,其中有上面使用的两个方法(和)。 我不想签入if条件并相应地返回响应代码,有没有其他更好的方法来做到这一点?