webview - access-control-allow-origin不允许使用origin(使用cordova将angular转换为mobile)

时间:2018-05-11 16:34:45

标签: android angular cordova cors alfresco

我正在尝试使用Alfresco adf组件(https://github.com/Alfresco/alfresco-ng2-components)创建一个角度应用程序,并且还需要一个移动应用程序,因此我决定使用cordova生成apk。

我按照以下教程(https://medium.com/@nacojohn/convert-your-angular-project-to-mobile-app-using-cordova-f0384a7711a6)生成我的apk。

似乎一切正常,apk生成并安装在BlueStack中,直到我必须在我的应用程序中登录。

Origin is not allowed by access-control-allow-origin

我知道我需要有一个白名单政策来导航应用程序webview

config.xml中

<?xml version='1.0' encoding='utf-8'?>
<widget id="com.example.hello" version="1.0.0" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
  <name>HelloWorld</name>
  <description>
    A sample Apache Cordova application that responds to the deviceready event.
  </description>
  <author email="dev@cordova.apache.org" href="http://cordova.io">
    Apache Cordova Team
  </author>
  <content src="index.html" />
  <access origin="*" />
  <allow-intent href="http://*/*" />
  <allow-intent href="https://*/*" />
  <allow-intent href="tel:*" />
  <allow-intent href="sms:*" />
  <allow-intent href="mailto:*" />
  <allow-intent href="geo:*" />
  <allow-navigation href="*" />
  <platform name="android">
    <allow-intent href="market:*" />
  </platform>
  <platform name="ios">
    <allow-intent href="itms:*" />
    <allow-intent href="itms-apps:*" />
  </platform>
  <plugin name="cordova-plugin-device" spec="^2.0.2" />
  <plugin name="cordova-plugin-whitelist" spec="^1.3.3" />
  <engine name="android" spec="^7.0.0" />
  <engine name="ios" spec="^4.5.4" />
</widget>

的index.html

 <meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval'"

我的angular web应用程序有一个dev-server代理来修复CORS问题

proxy.conf.json

{
  "/alfresco": {
    "target": "server-url",
    "secure": false,
    "changeOrigin": true
  },
  "/activiti-app": {
    "target": "another-server-url",
    "secure": false,
    "changeOrigin": true
  }
}

我不知道自己需要做些什么。我做错了什么?需要做更多的事情吗?

由于

3 个答案:

答案 0 :(得分:3)

我认为您应该在Alfresco服务器中启用CORS,您可以通过以下方式实现:

  • 在您的Alfresco扩展程序中包含此dependency
  • 或者直接在Tomcat服务器中启用CORS,可以在Tomcat documentation中找到完整的详细信息。

答案 1 :(得分:0)

您必须启用CORS以获取详细信息,请参阅Getting Started with Alfresco Application Development Framework

答案 2 :(得分:0)

我的问题是 app.config.json 中缺少配置。

而不是

"ecmHost": "http://{hostname}{:port}",
"bpmHost": "http://{hostname}{:port}"

我只需要将ecmHost和bpmHost设置为我的服务器,一切正常。

感谢帮助人