Node.js 角问题

Node.js 角问题,node.js,apache,angular,express,universal,Node.js,Apache,Angular,Express,Universal,我有一个角度通用应用程序设置。我确实使用localhost在服务器端发布请求来预渲染我的应用程序,这很好 一个示例工作url是 我现在已经在一个外部url(apache服务器)上将该应用程序投入生产。我也在使用ssl 现在,当我尝试在服务器端执行POST请求以预呈现我的应用程序时,我得到了一个状态为0、url:null的响应(我假设这意味着连接被拒绝) 一个非工作url示例如下 真正让我困惑的是,当应用程序加载到客户端时,所有HTTPS请求都开始工作。所以问题是我无法让express服务器向我的

我有一个角度通用应用程序设置。我确实使用localhost在服务器端发布请求来预渲染我的应用程序,这很好

一个示例工作url是

我现在已经在一个外部url(apache服务器)上将该应用程序投入生产。我也在使用ssl

现在,当我尝试在服务器端执行POST请求以预呈现我的应用程序时,我得到了一个状态为0、url:null的响应(我假设这意味着连接被拒绝)

一个非工作url示例如下

真正让我困惑的是,当应用程序加载到客户端时,所有HTTPS请求都开始工作。所以问题是我无法让express服务器向我的外部url发送POST请求

我在服务器端测试了一个到另一个网站(twitter)的post请求,这似乎也很好。所以我不完全确定我错在哪里了

我已经将CORS设置为“*”。

尝试使用

http://localhost:8000/api/get-信息

在生产中也是如此。由于Angular应用程序与API运行在同一台服务器上,因此使用
localhost
应该可以正常工作。不管你是否在外部URL上

我对我的翻译做了类似的事情(这是一个GET,但这不重要):

if ( this.isServer ) {
     translateLoader.setUrl( 'http://localhost:4000/assets/localization/' );
 } else {
     translateLoader.setUrl( 'assets/localization/' );
 }

它在本地和生产环境中(服务器和客户端)都能正常工作。

我自己两天都遇到了这个问题。请看一看我对此事的评论

基本上,我所做的是在Angular中进行条件检查,以查看应用程序是否在浏览器或服务器中运行(由Angular Universal提供),并相应地将API端点更改为https中的实际IP或http中的localhost。同样在我的Nginx设置中,我只通过检查服务器名称是否为localhost将传入请求从浏览器重定向到https


希望有帮助

你的API在哪里运行?与ssr引擎相同的Express.js服务器?是使用自行生成的ssl密钥还是您购买的?!这不是一个有效的响应,请参阅此链接@moema my API正在同一台服务器上运行。@jingle96我从Gandi那里买的。干杯,我使用该方法使其正常工作。关键还在于让服务器通过HTTP侦听不同的端口。因此,服务器在端口3000上侦听HTTP,在端口8000上侦听HTTPS。服务器端请求,客户端请求。完美!这就是我的意思,但我忘了你的HTTPS