我有一个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恰好对此有对话框警告。
3条答案
按热度按时间cvxl0en21#
这可能不会直接帮助你的情况下,但我遇到了同样的问题,这是由于我有错误的请求类型.我相信它可能会帮助别人.
请记住,我使用的是jQuery。
原始代码:
字符串
解决代码:
型
正如你所看到的,我设置了错误的“类型”参数。它应该是GET或POST。希望这可能会带来一些启示。
vd8tlhqk2#
很可能您的后端不接受没有尾随斜杠的URL(如果您正在使用它们),当它满足这样的请求时,它会尝试将您重定向到正确的URL(带有尾随斜杠)。这种重定向正确URL的尝试会导致弹出窗口。因此,请确保您使用的URL带有尾随斜杠。
关于AngularJS RESTful基础结构,
$resource
默认情况下会删除尾随斜杠,但您可以启用它们(从AngularJS 1.3.0开始)。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