在Cordova应用中添加与angular相同的代理功能

时间:2019-04-03 05:59:02

标签: angular cordova

我正在使用一个有角度的应用程序,必须在android应用程序中进行构建/部署。所以我为此使用了科尔多瓦。我是怎么做到的...

  1. 制作了有角度的应用程序的产品。 ng build --prod
  2. 创建了单独的cordova项目。
  3. 将Android添加为平台。
  4. 将角度项目的dist文件夹中的所有文件复制到cordova项目的www文件夹中
  5. cordova run android

这对我所有的项目都很好。但是我在使用代理配置文件的项目之一中遇到了问题。

proxy.conf.json

{
  "/login": {
    "target": "http://w3:8080",
    "changeOrigin":true,
    "secure": false
  },   
  "/api/usersvcs/*": {
    "target": "http://w3:8080",
    "pathRewrite": {"^/api/usersvcs": ""},
    "secure": false,
    "logLevel":"debug"
  },
  "/api/ordersvcs/*": {
    "target": "http://w3:8989",
    "pathRewrite": {"^/api/ordersvcs": ""},
    "changeOrigin":true,
    "secure": false,
    "logLevel":"debug"
  },
  "/api/paymentsvcs/*": {
    "target": "http://w3:9898",
    "pathRewrite": {"^/api/paymentsvcs": ""},
    "changeOrigin":true,
    "secure": false,
    "logLevel":"debug"
  },
}

在这个应用程序中,我对看起来像这样的网址有http请求

this.http.get('/api/usersvcs/getAllUsers').subscribe(response => {...});

当我使用代理配置文件时,实际到达服务器的网址是

http://w3:8989/getAllUsers

这是由于代理配置文件中的pathRewrite参数引起的。

现在我应该在我的cordova项目中做些什么,这将有助于我像在angular中一样进行代理。现在,在我的同一个角度项目的android应用程序中,什么都没起作用。

我的cordova应用程序 config.xml 看起来像这样

<?xml version='1.0' encoding='utf-8'?>
<widget id="io.cordova.veta" version="1.0.0" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
    <name>Veta</name>
    <description>
        Veta Application
    </description>
    <author email="dev@cordova.apache.org" href="http://cordova.io">
        Apache Cordova Team
    </author>
    <content src="index.html" />
    <plugin name="cordova-plugin-whitelist" spec="1" />
    <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:*" />
    <platform name="android">
        <allow-intent href="market:*" />
    </platform>
    <platform name="ios">
        <allow-intent href="itms:*" />
        <allow-intent href="itms-apps:*" />
    </platform>
    <engine name="browser" spec="^5.0.4" />
    <engine name="android" spec="^7.1.4" />
</widget>

0 个答案:

没有答案