【问题标题】:Post Request on PhoneGap does not workPhoneGap 上的发布请求不起作用
【发布时间】:2016-01-07 08:59:48
【问题描述】:

我正在使用 PhoneGap 和 AngularJS 构建一个 Android 应用程序。

为了到达服务器端,我正在使用 AngularJS 的 $http 服务

使用 GET 方法到达服务器端时,一切正常。

一旦使用 POST,请求似乎永远不会离开应用程序。 浏览器页面上的相同过程完美运行。

这是我的 POST 请求

$http.post(URL_REQUEST,data,{'headers':{'Content-Type':'application/json' }})
.success(function(d, status, headers, config, statusText) {
    console.log("  success");

}).error(function(d, status, headers, config) {
    console.log("  error");
});

在我的 logcat 中,我得到了一个错误结果:

"status":403,
"config":{"method":"POST",
"transformRequest":[null],
"transformResponse":[null], 
... 

再次在浏览器上完美运行。在 PhoneGap App 上,只有 GET 请求有效

【问题讨论】:

  • 403 被禁止。您可以在服务器上记录 HTTP 请求吗?如果是这样,我会将 phonegap 应用程序发送的 POST 与浏览器发送的 POST 进行比较,然后您就知道了。
  • 嗨,没有成功。请求根本没有到达过滤器。顺便说一句,我正在为模拟器使用 genymotion。

标签: android angularjs cordova


【解决方案1】:

如果您使用的是 Cordova 5,您可能需要在 index.html 文档中配置 Content Security Policy 元标记,以允许从其他服务器获取内容。您可以为每个服务器主机或通配符指定此项。默认情况下它是关闭的,因此您必须考虑安全性以及要启用什么。

这是一个允许访问一个域 (api.mydomain.com) 的示例:

<meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *; connect-src http://api.mydomain.com">

如果你想访问任何地方,你可以使用通配符。

【讨论】:

  • 我正在使用 Cordova 5.1.1 和 GenyMotion 作为模拟器。
  • 我对connect-src进行了wildcare,但仍然有这个问题。虽然所有获取请求都可以正常工作,但帖子甚至没有到达容器过滤器。有人在 genymotion 上发帖请求成功吗?
  • 我正在尝试连接到我的本地主机,在 genymotion 中是 10.0.3.2:8080 ,GET 请求再次正常工作。但是帖子被阻止并立即使用 403 FORBIDEN 代码抛出错误
【解决方案2】:

我从这篇文章中得到它:

Cordova POST - Request Forbidden 403. Not reaching Dispatcher Servlet

似乎 phonegap 在 Web.xml 文件上使用 CORSFilter 时出现问题。不知道为什么。但是一旦删除它就可以了

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多