Dic*_*mpo 43 javascript node.js angularjs angular-ui
我使用AngularJS,$resource及$http与工作apis,但由于安全原因,我需要做(HTTPS协议下工作)的HTTPS请求.
https在AngularJS中使用的方法是什么.谢谢你的帮助.
cra*_*igb 27
$http像往常一样使用api:
$http.get('/someUrl').success(successCallback);
Run Code Online (Sandbox Code Playgroud)
如果您的应用程序是通过HTTPS提供的,那么您正在进行的任何调用都是通过HTTPS进行相同的主机/端口等.
如果您为请求使用完整的URI,$http.get('http://foobar.com/somePath')那么您将不得不更改要使用的URIhttps
Dan*_*nil 26
出于某种原因,如果您在请求结束时没有拖尾,Angular将通过HTTP发送所有请求.即使页面本身是通过HTTPS提供的.
例如:
$http.get('/someUrl').success(successCallback); // Request would go over HTTP even if the page is served via HTTPS
Run Code Online (Sandbox Code Playgroud)
但是如果你添加一个领先/一切都会按预期工作:
$http.get('/someUrl/').success(successCallback); // This would be sent over HTTPS if the page is served via HTTPS
Run Code Online (Sandbox Code Playgroud)
编辑:此问题的根本原因是Angular查看服务器的实际标头.如果http数据通过https的内部传递不正确,仍会有http标头,如果最后没有添加/,Angular会使用它们.即如果您通过https提供NGINX服务内容,但通过http将请求传递给后端的Gunicorn,则可能存在此问题.解决这个问题的方法是将正确的标题传递给Gunicorn,这样你的框架就会受到通过https服务的印象.在NGINX中,您可以使用以下行执行此操作:
proxy_set_header X-Forwarded-Proto $ scheme;
我最近遇到类似的问题使用Angular 1.2.26,但只有在通过负载均衡器进行交互时 - 可能会剥离https相关的头文件......不确定原因.我求助于此:
uri = $location.protocol() + "://" + $location.host() + "/someUrl"
Run Code Online (Sandbox Code Playgroud)
如果使用非标准端口,您可能还想添加$ location.port().
| 归档时间: |
|
| 查看次数: |
70866 次 |
| 最近记录: |