Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
AngularJS在POST上从https请求http_Angularjs_Nginx_Https_Flask_Xmlhttprequest - Fatal编程技术网

AngularJS在POST上从https请求http

AngularJS在POST上从https请求http,angularjs,nginx,https,flask,xmlhttprequest,Angularjs,Nginx,Https,Flask,Xmlhttprequest,我有一个网站,我正试图通过一个AngularJS控制器通过https登录。每次我尝试登录时都会收到这样的消息 混合内容:通过HTTPS加载了“”处的页面,但请求了不安全的XMLHttpRequest终结点“”。此请求已被阻止;内容必须通过HTTPS提供。” 该站点在nginx上运行,配置为将所有内容重定向到https 这是我的控制器代码 app.controller("LoginCtrl", function ($scope, $http, $window) { $scope.formData

我有一个网站,我正试图通过一个AngularJS控制器通过https登录。每次我尝试登录时都会收到这样的消息

混合内容:通过HTTPS加载了“”处的页面,但请求了不安全的XMLHttpRequest终结点“”。此请求已被阻止;内容必须通过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!");
    });
}
});
我的后端正在Flask上运行,这部分的一切似乎都正常工作

目前它会像失败一样暂停,但当我重新加载主页时,它让我成功登录


当所有内容都通过https加载时,AngularJS为什么要将
XMLHttpRequest
推送到http?我如何修复它以使其正常工作?

我刚刚解决了我的问题。在我的后端Flask之前设置为在成功后自行重定向,这意味着它没有正确返回对AngularJS的响应
$http.post()
登录成功。一旦我在python中重写了我的返回,用json响应
返回jsonify({'success':False,'msg':“用户名或密码无效”})

返回jsonify({'success':True,'msg':“登录成功”})
angularjs请求工作正常。

您在初次登录时的请求中是否看到任何与https相关的标题?请求URL和所有临时标题显示
https
我不确定如何从angularjs捕获整个请求。此问题可能会澄清: