使用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=/";