我有一個網站,我試圖通過https與AngularJS控制器進行登錄。每次我試圖登錄我得到這樣AngularJS在POST上向https請求http
混合內容的消息:在「https://example.com/」加載頁面通過HTTPS,但要求一個不安全的XMLHttpRequest端點「http://example.com/」。此請求已被阻止;內容必須通過HTTPS提供服務。」
該網站上nginx的運行配置的一切重定向到https。
這裏是我的控制器代碼。
app.controller("LoginCtrl", function ($scope, $http, $window) {
$scope.formData = {};
$scope.remember_me = false;
$scope.doLogin = function(){
var xsrf = $scope.formData;
$http({
url: "/login",
method: "POST",
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
transformRequest: function(obj) {
var str = [];
for(var p in obj)
if (obj.hasOwnProperty(p)){
str.push(encodeURIComponent(p) + "=" + encodeURIComponent(obj[p]));
}
return str.join("&");
},
data: xsrf
}).success(function(data) {
if($window.location.pathname == '/login') {
$window.location.href = '/';
}
else{
$window.location.reload();
}
});
}
$scope.doJsonLogin = function(){
var xsrf = $scope.formData;
$http.post('/', { 'u': $scope.formData.username, 'p': $scope.formData.password, 'c': $scope.remember_me }).success(function(data) {
if($window.location.pathname == '/login') {
$window.location.href = '/';
}
else{
$window.location.reload();
}
}).error(function (data, status, headers, config) {
console.log(data);
console.log(status);
console.log(headers);
console.log(config);
alert("failed!");
});
}
});
我的後端上運行燒瓶,一切似乎都在正常工作。
目前它會失速,但當我重新加載主頁,它讓我成功登錄。
爲什麼AngularJS會在通過https加載所有內容時將XMLHttpRequest
推送到http,以及如何修復它以使其正常工作?
您是否在初始登錄時在請求中看到任何與https相關的標頭? – mindparse 2015-02-11 22:47:37
請求URL和所有臨時標題顯示'https'我不確定如何捕獲來自angularjs的整個請求。 – 2015-02-12 14:49:06
這個問題可以解釋一下:[MixedContent當我通過ajax加載https頁面,但瀏覽器仍然認爲它是http](http://stackoverflow.com/questions/28197528/mixedcontent-when-im-loading-https-page - 通過Ajax的,但是,瀏覽器仍然認爲) – Danil 2016-01-12 20:47:29