针对PUT请求的DOM异常19

时间:2013-07-22 05:07:57

标签: javascript amazon-s3 xmlhttprequest put

我正在使用Javascript中的xmlhttprequest向PUT请求将对象上传到S3存储桶。 CORS设置正确。这是我正在尝试的代码。

        var bucketPath = 'http://<bucket-name>.s3.amazon.com/'
        var fileName = <name> + ".json";
        var uploadPath = bucketPath + fileName.replace(/\s/g,"+");
        var xmlhttp;
        if (window.XMLHttpRequest)
          {// code for IE7+, Firefox, Chrome, Opera, Safari
          xmlhttp=new XMLHttpRequest();
          }
        else
          {// code for IE6, IE5
          xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
          }
          xmlhttp.onreadystatechange=function()
          {
          if (xmlhttp.readyState==4 && xmlhttp.status==200)
            {
                showData();
            }
            else{
                showError();
            }
          };
        xmlhttp.open("PUT",uploadPath,false);
        xmlhttp.send(JSON.stringify(jsonObject), replacer);

我在最后一行代码中得到了一个DOM Exception 19。不确定有什么问题。我尝试使用示例测试脚本执行相同的操作。只有当我尝试将它用于我的应用程序时,才会抛出此异常。

在Chrome调试器下的网络标签中,我可以看到一个HTTP请求,其中Method为OPTIONS,Type为待定。

我看不到发送的实际PUT请求。谁能告诉我问题是什么以及Exception意味着什么?

更新: 仔细查看从jsfiddle和我的应用程序发送的请求之后。我看到有两个请求是从JS Fiddle发送的预检HTTP OPTIONS请求,之后是实际的PUT请求。

虽然它在JS小提琴上效果很好,但另一方面,我的应用程序中的相同代码发送了预检HTTP OPTIONS请求,但是没有得到200返回状态待定。这就是它失败的原因。

为什么我没有为HTTP OPTIONS请求获得成功的任何想法。

1 个答案:

答案 0 :(得分:0)

好的,得到了​​这个bug。与CORS无关。我正在尝试执行PUT请求的网址应为http://bucket-name.s3.amazon aws .com /