角度通用https问题

时间:2017-10-04 17:10:36

标签: node.js apache angular express universal

我有一个角度通用应用程序设置。我在服务器端使用localhost进行POST请求预渲染我的应用程序,这很好。

示例工作网址为http://localhost:8000/api/get-info

我现在已经在外部网址(apache服务器)上投放了应用程序。我也在使用ssl。

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

示例非工作网址为https://mywebsite.com/api/get-info

真正让我感到困惑的是,当应用加载客户端时,所有HTTPS请求都会开始工作。所以问题是我无法让快速服务器将POST请求发送到我的外部URL。

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

我已经将CORS设置为'*'。

2 个答案:

答案 0 :(得分:1)

尝试使用

http://localhost:8000/api/get-info

在生产中也是如此。由于您的Angular应用程序在运行API的同一服务器上呈现,因此使用localhost应该可以正常工作。如果您使用的是外部URL,则无关紧要。

我用我的翻译做了类似的事情(这是一个GET,但这无关紧要):

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

它适用于本地和生产(服务器和客户端)。

答案 1 :(得分:0)

我刚刚遇到了这个问题两天。请看一下我对https://github.com/angular/universal/issues/856#issuecomment-426254727的评论。

基本上我所做的是在Angular中进行条件检查,以查看该APP是在浏览器中还是在服务器中运行(由Angular Universal渲染),然后将API端点相应地更改为https中的实际IP或http中的localhost。同样在Nginx设置中,我仅通过检查server_name是否为localhost将来自浏览器的传入请求重定向到https。

希望有帮助!