angularjs Firefox弹出“此网页正在被重定向到一个新的位置”在每一个requestPromise的访问-有什么方法可以避免吗?

gzszwxb4  于 5个月前  发布在  Angular
关注(0)|答案(3)|浏览(48)

我有一个Web应用程序,它使用了很多AJAX技术。在我最初的测试中,它工作得很好,但在我今天的测试中,(在Mac和IE上,在多台计算机上),对于每一个PUT和PACK调用,都会弹出一条消息“此网页正在重定向到新位置”,这使得页面完全无法工作。有趣的是,在GET调用中不出现弹出窗口。
PUT和GET都使用Angular Promise结构,而GET使用标准的$.http调用。
下面是我的GET代码,它不会触发弹出窗口:

$http({
                method: 'GET',
                url: $scope.faveURL
            }).success(function (data, status, headers, config) {
                if (data === "false") {
                    $scope.faveempty = true;
                    $scope.faveloading = false;
                } else {
                    $scope.favourites = data;
                    $scope.faveloading = false;
                }
            });

字符串
下面是我的PUT & PUT的代码,它们都触发了弹出窗口:

if (food.favourite === true) {
                requestPromise = $http.put($scope.URL).then(function () {
                    $scope.favourites.push(food);
                    $scope.faveempty = false;
                    food.loading = "none";
                    change = $scope.favouriteChange(food);
                });

            } else if (food.favourite === false) {
                requestPromise =  $http({
                    method: 'DELETE',
                    url: $scope.URL
                }).then(function () {
                    $scope.favourites.splice($scope.favourites.indexOf(food), 1);
                    if ($scope.favourites.length < 1) {
                        $scope.faveempty = true;
                    }
                    food.loading = "none";
                    change = $scope.favouriteChange(food);
                });
            }


有没有其他人在使用requestPromise进行Ajax调用时遇到过这个问题?你找到了解决方法吗?
更新:
检查网络流量,这只发生在AJAX调用中,这些调用响应重定向。这很好,没有弹出窗口:

[15:09:58.742] GET http://redacted/api/ext/group/35/ [HTTP/1.1 200 OK 381ms]


这将导致弹出窗口:

[15:03:25.036] PUT http://redacted/api/ext/favorite/713 [HTTP/1.0 301 TYPO3 RealURL redirect 126ms]


所以Typo 3服务响应PUT & PUT方法的方式有问题,Firefox恰好对此有对话框警告。

cvxl0en2

cvxl0en21#

这可能不会直接帮助你的情况下,但我遇到了同样的问题,这是由于我有错误的请求类型.我相信它可能会帮助别人.
请记住,我使用的是jQuery。
原始代码:

$.ajax({
        url: link,
        type: 'json',
        success: function(html) {
          return _this.ajaxLoadIn(html);
        },
        error: function(e) {
          return alert('Sorry, something went wrong, please try again');
        }
      });

字符串
解决代码:

$.ajax({
        url: link,
        dataType: 'json',
        type: 'get',
        success: function(html) {
          return _this.ajaxLoadIn(html);
        },
        error: function(e) {
          return alert('Sorry, something went wrong, please try again');
        }
      });


正如你所看到的,我设置了错误的“类型”参数。它应该是GET或POST。希望这可能会带来一些启示。

vd8tlhqk

vd8tlhqk2#

很可能您的后端不接受没有尾随斜杠的URL(如果您正在使用它们),当它满足这样的请求时,它会尝试将您重定向到正确的URL(带有尾随斜杠)。这种重定向正确URL的尝试会导致弹出窗口。因此,请确保您使用的URL带有尾随斜杠。
关于AngularJS RESTful基础结构,$resource默认情况下会删除尾随斜杠,但您可以启用它们(从AngularJS 1.3.0开始)。

l7wslrjt

l7wslrjt3#

我意识到这是一个10年前的问题,但它是搜索短语“此页面正在重定向到新位置”时出现的第一件事之一。在我的情况下,弹出窗口出现,因为我已经将Firefox的about:config中的network.http.prompt-temp-redirect设置标志更改为true。设置回到false停止了弹出窗口。
其他人已经报告成功改变了不同的值,你不妨检查一下:
1.在Firefox URL栏中输入about:config
1.搜索network.http.prompt-temp-redirect,确保值设置为false
1.搜索network.http.redirection-limit,确保将其设置为20
1.搜索browser.meta_refresh_when_inactive.disabled,确保这是false

相关问题