如何在 AngularJS 中使用 HTTPS
How can I use HTTPS in AngularJS?
我正在使用AngularJS,$resource
&$http
并使用apis
,但是由于安全原因,我需要发出HTTPS请求(在HTTPS协议下工作)。
在AngularJS中使用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从服务器查看实际标头。如果你通过https的内部传递http数据不正确,仍然会有http标头,如果你不在末尾添加/,Angular会使用它们。 即,如果你有一个 NGINX 通过 https 提供内容,但通过 http 将请求传递给后端的 Gunicorn,你可能会遇到这个问题。解决这个问题的方法是将正确的标头传递给 Gunicorn,这样您的框架就会给人以通过 https 提供的印象。在NGINX中,您可以使用以下行执行此操作:
proxy_set_header X 转发原型$scheme;
像往常一样使用 $http
api:
$http.get('/someUrl').success(successCallback);
如果您的应用程序通过HTTPS提供,那么您进行的任何调用都是通过HTTPS对同一主机/端口等进行的。
如果您为请求使用完整的 URI,例如 $http.get('http://foobar.com/somePath')
,您必须更改 URI 才能使用https
我最近在使用 Angular 1.2.26 时遇到了类似的问题,但仅限于通过负载均衡器进行交互时 - 这可能会剥离与 https 相关的标头......还不确定原因。我已经求助于这个:
uri = $location.protocol() + "://" + $location.host() + "/someUrl"
如果使用非标准端口,您可能还需要添加 $location.port()。
- 如何在angularJS中编辑时,如果DB中的值为true,则设置复选框,如果值为false,则取消选中复选框
- AngularJS:我可以跳过函数参数回调吗
- AngularJS UI路由器不能像ng路由器那样工作
- 在AngularJS应用程序中使用封装指令和路由的推荐方式是什么
- 如何包含特定于每个视图angularjs的javascript文件
- AngularJS:ng之后,重复$scope值未按预期更新
- AngularJS-在JSON选择器中使用变量名
- $window.ga在AngularJS事件中未定义
- AngularJS-使用'true'属性
- 打开一个模态并将其链接到AngularJS中的指令
- Angularjs代码未在匿名函数中运行
- angularjs+rails应用程序中未显示模板
- 我的AngularJS表达式没有'不起作用
- HTTPS 'GET' in AngularJS
- 如何在 AngularJS 中使用 HTTPS
- 使用AngularJS使用HTTPS url跨域加载JSON
- 如何根据浏览器url将url嵌入angularjs中作为https
- AngularJS:通过https提供$resource,Angular从https切换到http
- Angularjs -在HTTPS URL上使用$http
- 在AngularJS中为all $https调用设置相对路径