上传大文件的AJAX调用后链接失败

时间:2016-01-02 08:22:13

标签: ajax file hyperlink upload

使用AJAX上传大文件后,我页面上的链接无效。它们导致臭名昭着的错误“请求的URL被拒绝。如果您认为这是一个错误,请联系网站管理员。您的支持ID是......”(即文件上传成功,但链接随后失败。)

我在上传大型(19 MB)文件后出现此行为,但在上传小型(100 K)文件后却没有,而不是在上传 no 文件后。如果我“清除域名的cookie”,它将恢复预期的行为。 (违规cookie可能被称为“TS0194eee0_0”。)

IE 11,FireFox 40.0和BlackBerry浏览器中的错误行为相同。

我做错了什么?在完成AJAX调用后我是否应该清除某些内容? (我真的不想做一个“删除cookie”黑客。)JQuery不是一个选项。我的网站在“共享主机”环境中提供服务,因此访问php.ini是不可能的。

upload1.html:

<!DOCTYPE html>
<html>
 <head>
  <script>
function startUpload()
  {
  var ajax = new XMLHttpRequest();
  ajax.onreadystatechange = function()
    {
    if (ajax.readyState == 4 && ajax.status == 200)
      {alert (ajax.responseText);}
    };
  ajax.open("POST", "/test/upload2.php");
  ajax.send(new FormData(document.getElementById("form1")));
  }
  </script>
 </head>
 <body>
  <a href="http://www.mywebsite.com/test/index.html">Absolute link</a><br />
  <a href="/test/index.html">Site relative link</a><br />
  <a href="index.html">Document relative link</a><br />
  <form id="form1" enctype="multipart/form-data" method="post">
   <input type="file" name="file1" id="file1" /><br>
   <input type="button" value="Start Upload" onclick="startUpload()" />
  </form>
 </body>
</html>

upload2.php:

<?php echo "Hello World!"; ?>

更新:正如我所怀疑的那样,删除(过期)有问题的cookie解决了“暂时”的问题,但需要多长时间?我不知道为什么cookie“TS0194eee0_0”与问题有关,或者它总是有这个名字。

document.cookie = "TS0194eee0_0=; expires=Thu, 01 Jan 1970 00:00:00 UTC;path=/";

0 个答案:

没有答案