【问题标题】:Service ajax requests from within angular app from electron来自电子的角度应用程序内的服务ajax请求
【发布时间】:2019-03-18 22:30:58
【问题描述】:

我正在尝试使用 Angular 编写的现有 Web 应用程序并将其包装在电子中。我已经让电子打开 Angular 应用程序,但我希望电子包装器能够为 ajax 请求提供服务,而不是应用程序进入 Web 服务。例如,角度应用程序尝试在“api/subscriptions”处获取,我希望它从电子端请求,然后从本地文件系统获取电子服务数据。有没有办法做到这一点,或者我是否需要制作一个仅在为电子环境构建时才包含的自定义角度服务?我希望 Angular 应用程序尽可能保持环境非特定性。

【问题讨论】:

  • 到目前为止你尝试了什么?
  • @SiddAjmera - 我已经尝试谷歌搜索了大约 8 个小时,没有骰子。正要像我建议的那样做一个有条件编译的服务,但我想看看是否有人遇到过这个问题,或者电子可能有某种未记录的 api 来拦截 ajax 请求。

标签: angular electron


【解决方案1】:

使用WebRequest 并拦截任何请求,然后返回您的自定义响应。

它还包含一个过滤器,因此您只能拦截说“/api/subscriptions”等。

const {session} = require('electron')

session.defaultSession.webRequest.onBeforeRequest((details, callback) => {
    //Stopping original request

    //Fetch from some file etc.
    const response = fs.readFile .... //Or wherever

    //Make sure to call the callback with response
    callback({response})
})

【讨论】:

  • Ty 寻求帮助。我已经通读了这个文档,但我没有看到能够返回响应的内容。我试过你上面显示的(虽然它在打字稿here),当我运行应用程序并触发ajax时,我从铬开发控制台得到这个:Failed to load resource: net::ERR_CONNECTION_REFUSED。我认为这是因为 electron 继续尝试联系 localhost:80 而不是仅响应我的有效负载。这可能只有以前的版本吗?我正在使用电子 3.0.3
  • 您的服务器是否在本地主机上运行?该错误似乎您调用了locahost/api/...,但可能没有服务器正在运行来处理它
  • 是的,它正在查询http://localhost/api/subscriptions。我想在他们离开电子之前劫持他们。定位电子的网址应该是什么?
  • 实际上,我可能正在接近这个错误。在电子应用程序中托管一个小型快速服务器并以这种方式返回数据是一种更常见的策略吗?
  • 是的,您也可以这样做。你必须检查它是否是一个电子应用程序并在那里路由流量。
猜你喜欢
  • 2014-12-18
  • 2011-04-05
  • 1970-01-01
  • 2017-10-04
  • 2019-08-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多