我有一个角度通用应用程序设置。我在服务器端使用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设置为'*'。
答案 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。
希望有帮助!