如何在AngularJS中使用HTTPS
我使用的是Angularjs $ resource&$ http和apis,但是由于安全原因我需要调用HTTPS请求(在HTTPS协议下工作)。
什么是在angularjs中使用https的方式。 感谢你的答案。
像通常一样使用$http
api:
$http.get('/someUrl').success(successCallback);
如果您的应用程序通过HTTPS提供服务,那么您所做的任何调用都是通过HTTPS连接到相同的主机/端口等。
如果您使用完整的URI进行请求,例如$http.get('http://foobar.com/somePath')
那么您将不得不更改您的URI以使用https
出于某种原因,如果您的请求没有结束,Angular会通过HTTP发送所有请求。 即使页面本身通过HTTPS提供服务。
例如:
$http.get('/someUrl').success(successCallback); // Request would go over HTTP even if the page is served via HTTPS
但是,如果你添加领先的/一切都会按预期工作:
$http.get('/someUrl/').success(successCallback); // This would be sent over HTTPS if the page is served via HTTPS
编辑:这个问题的根本原因是Angular看从服务器的实际标题。 如果你有一个不正确的HTTP数据通过HTTPS的内部传递仍然会有HTTP头,Angular会使用它们,如果你不加/在最后。 即如果你有一个NGINX通过https提供内容,但通过http传递请求到后端的Gunicorn,你可能会遇到这个问题。 解决这个问题的方法是将正确的头文件传递给Gunicorn,这样你的框架就可以通过https服务了。 在NGINX中,您可以使用以下行来完成此操作:
proxy_set_header X-Forwarded-Proto $ scheme;
我最近遇到类似的问题,使用Angular 1.2.26,但只有当通过负载平衡器进行交互 – 这可能是剥离https相关的头…不知道原因呢。 我已经诉诸于此:
uri = $location.protocol() + "://" + $location.host() + "/someUrl"
如果使用非标准端口,也可能需要添加$ location.port()。
- angularjs:防止Bootstrap莫代尔消失,当点击外面或按逃生?
- 你可以覆盖AngularUI Bootstrap中的特定模板?
- 在自定义事件上启用angular-ui工具提示
- 如何在ui-router中使用ui-sref传递参数给控制器
- 在AngularJS中使用AngularUI Bootstrap Modal的范围问题
- 如何使用angular度检测浏览器?
- 在select匹配上使用angular ui-bootstrap typeaheadcallback?
- 使用哪一个,AngularUI Bootstrap或AngularStrap?
- 当用户使用UI-Router转换到其父状态时,将用户引导到子状态