Javascript 到不同域的Post偶尔会失败
我有一个问题,当“张贴”到一个不同的网站作为一个会话转移到我的公司工作的一部分。他们要求我们通过“Post”请求导航到他们的站点,查询字符串中包含会话令牌(是的,请求中没有正文) 这是我用于Post请求的代码:Javascript 到不同域的Post偶尔会失败,javascript,jquery,post,Javascript,Jquery,Post,我有一个问题,当“张贴”到一个不同的网站作为一个会话转移到我的公司工作的一部分。他们要求我们通过“Post”请求导航到他们的站点,查询字符串中包含会话令牌(是的,请求中没有正文) 这是我用于Post请求的代码: navigateByPost = function(path, parameters) { var form = $('<form />'); form.attr("method", "post"); form.attr("action", path
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();
}
大多数情况下,这是正确的,但有时,在完全随机的时间间隔内,我看到请求被取消,导航从未发生。这就是当导航失败时,我在chrome开发工具中看到的情况:
我已经登录了Firefox,但问题似乎没有出现,所以我不知道真正的问题是什么。我知道这在另一方不会是个问题,因为它不可能在一毫秒内到达那里并被拒绝。它一定是浏览器里的东西,但我不知道
请帮帮我,伙计们,我的桌子快用完了,我的头要撞到了 我发现上面显示的代码实际上运行正常。我发现连接了代码的链接实际上是导致问题的原因 之前,我得到的元素是这样的:
$(document).on("click", "a.sessiontransfer", function(e) {
e.PreventDefault();
doSessionTransfer();
return false;
});
因此,如果页面中添加了任何其他链接,他们将使用此功能。我发现这种方法在所有情况下都不起作用,偶尔会产生我在上面的屏幕截图中粘贴的错误。此后,我将此更改为以下内容:
$("a.sessiontransfer").off().on("click", function(e) {
e.PreventDefault();
doSessionTransfer();
return false;
});
我还没有在我尝试过的任何设备上出现过这种故障,但它有一个不幸的副作用,即如果我向页面添加任何链接,我将不得不重新调用此功能来重新钩住所有元素,确保首先删除现有的点击
我希望这将有助于节省一些人几天的调查,并在这个过程中节省一些办公桌 在对navigateByPost()的调用中缺少包含“path”变量的选项;还是有一些我看不到的魔法在发生?是在安全和非安全之间发布数据?例如,http/https@limelights我已经在调用中包含了路径,但是post请求中没有要发送的参数,因此第二个参数为空。@devsatish连接当前为http»http,但是,如果我们可以让它工作,它们将来将是https»https。@brins0但是如果参数在某些情况下为空,这不会导致表单没有字段吗?
$("a.sessiontransfer").off().on("click", function(e) {
e.PreventDefault();
doSessionTransfer();
return false;
});