angularjs - phonegap 支持 Cors 吗?

标签 angularjs tomcat cordova cors

我是 phonegap 的新手。我正在尝试在 phonegap 中运行 AngularJs 应用程序。在服务器端,我使用 Apache tomcat 7 CORS 过滤器和 Rest。当我从浏览器运行应用程序时,它工作正常。但目前我在 ios 或 android 中使用 phonegap 运行应用程序,GET 请求工作正常但发布请求给出 403 Forbidden 响应。我可以在 file://的请求“Origin” header 值中看到。我认为问题就出在这里。

我的 tomcat Cors 过滤器配置是:

<filter>
    <filter-name>CorsFilter</filter-name>
    <filter-class>org.apache.catalina.filters.CorsFilter</filter-class>
    <init-param>
        <param-name>cors.allowed.origins</param-name>
        <param-value>*</param-value>
    </init-param>
    <init-param>
        <param-name>cors.allowed.methods</param-name>
        <param-value>GET,POST,HEAD,OPTIONS,PUT</param-value>
    </init-param>
    <init-param>
        <param-name>cors.allowed.headers</param-name>
        <param-value>customer,user,Delay,Content-Type,X-Requested-With,accept,Origin,Access-Control-Request-Method,Access-Control-Request-Headers</param-value>
    </init-param>
    <init-param>
        <param-name>cors.exposed.headers</param-name>
        <param-value>Access-Control-Allow-Origin,Access-Control-Allow-Credentials</param-value>
    </init-param>
    <init-param>
        <param-name>cors.support.credentials</param-name>
        <param-value>true</param-value>
    </init-param>
    <init-param>
        <param-name>cors.preflight.maxage</param-name>
        <param-value>10</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>CorsFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

这是我从客户发出请求时得到的结果:

Request URL:http://134.0.12.789:8081/test/rest-api/testing/add
Request Method:PUT
Status Code:403 Forbidden
Request Headersview source
Accept:application/json, text/plain, */*
Content-Type:application/json;charset=UTF-8
customer:Xyz
Origin:file:// 
user:user1
User-Agent:Mozilla/5.0 (Linux; Android 4.4.2; Nexus 7 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0 Safari/537.36
Request Payloadview source
{quantity:0.5, unit:KG, product:5791}
quantity: 0.5
unit: "KG"
product: 5791
Response Headersview source
Content-Length:0
Content-Type:text/plain
Date:Wed, 23 Jul 2014 10:43:14 GMT
Server:Apache-Coyote/1.1

另外我的 www/config.xml 和 platform/android/res/xml/config.xml 都有 <access origin="*" />行添加到它。

通过向 app.js 添加以下行,在 angular.js 中也启用了 CORS:

$httpProvider.defaults.useXDomain = true;
delete $httpProvider.defaults.headers.common['X-Requested-With'];

如果以前有人遇到过这个问题,请帮我解决这个问题。

最佳答案

是的,您所要做的就是在您的 config.xml 文件中添加这一行:

<access origin="http://example.com" />

你也可以这样做:

<access origin="*" />

但指定您要向其发送请求的域会更安全。

如果您需要更多信息,请查看此 page在 PhoneGap 文档上。

关于angularjs - phonegap 支持 Cors 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24909463/

相关文章:

angularjs - 当 $location.path ('new/path' 下方有代码时会发生什么)?

jquery - grunt concat/uglify 后 Firefox 无响应脚本

javascript - Android 推送通知-单击单个推送通知的操作按钮时如何获取通知数据

Tomcat:在 Windows 上创建本地 keystore 的问题

html - 涉及绝对和 z-index 时奇怪的 ios 行为

android - Cordova 可选择在安装或 CDN 上加载插件/库 - Android 和 iOS

javascript - 当我发出新请求时,Ajax http 请求将以前的图像加载到轮播中

javascript - Visual Studio 2013 中的 Angular Material 图标注册

apache - 为什么我们要以非root用户身份运行tomcat?

java - 如何在我的 web 项目中配置 log4J