当我将“发布”到其他网站作为会话转移到我正在使用的公司的一部分时,我遇到了问题。他们要求我们通过查询字符串中的会话令牌的“发布”请求导航到他们的网站(是的,请求中没有正文)。
这是我用于Post请求的代码:
navigateByPost = function(path, parameters)
{
var form = $('<form />');
form.attr("method", "post");
form.attr("action", path);
parameters && $.each(parameters, function (key, value)
{
var field = $('<input />');
field.attr("type", "hidden");
field.attr("name", key);
field.attr("value", value);
form.append(field);
});
$(document.body).append(form);
form.submit();
}
我这么称呼它:
navigateByPost('http://other.site/login/?parameter1=sessiontokenhere');
大多数情况下,这是正常的,但有时,在完全随机的时间间隔,我看到请求被取消,导航永远不会发生。当导航失败时,这就是我在chrome dev工具中看到的:
我已经检查过Firefox并且问题似乎没有发生,所以我对实际问题是什么感到茫然。我知道它在其他方面不会成为一个问题,因为它无法在那里达到并在一毫秒内被拒绝。它必须是浏览器中的内容,但我不知道。
请帮帮我们吧,我已经跑出办公桌来敲我的头!
答案 0 :(得分:0)
我发现上面显示的代码确实可以正常运行。我发现附有代码的链接实际上是导致问题的原因。
之前,我正在获得这样的元素:
$(document).on("click", "a.sessiontransfer", function(e) {
e.PreventDefault();
doSessionTransfer();
return false;
});
因此,如果向页面添加了任何其他链接,他们就会选择此功能。我发现这在100%的时间内都不起作用,偶尔会产生我在屏幕截图中粘贴的错误。我已将此更改为以下内容;
$("a.sessiontransfer").off().on("click", function(e) {
e.PreventDefault();
doSessionTransfer();
return false;
});
我还没有在我尝试过的任何设备上出现此故障,但它有一个不幸的副作用,如果我添加任何链接到页面,我将不得不重新调用此功能重新-hook所有元素,确保首先删除现有点击。
我希望这有助于拯救某人几天的调查,并在此过程中保存一些办公桌!