1

我想在不使用文件输入的情况下伪造文件上传。该文件的内容是从一个字符串生成的。即我想将一些字符串发布到内容类型为“multipart/form-data”的服务器。

但是服务器具有不同的域并且不支持 CORS,因此我无法使用 XMLHttpRequest。是否可以只使用普通形式的帖子来做到这一点?

4

1 回答 1

0

这实际上是一个很好的问题。以我的拙见,由于以下各种原因,您正在寻找的东西是不可能的:

  • 你肯定可以有一个像这样的 HTML 表单:

    <form ....>
    <input id="blah" type="input" name="nameblah" ..>
    ...
    </form>
    

    但正如您所知,您确实无法访问/修改所选文件的“内容”。直接的解决方案是使用隐藏字段作为替代并设置enctype=multipart/form-data,但对于隐藏字段,浏览器不会设置正确的Content-Disposition标题。

  • 您可以进行 AJAX 调用,在其中手动构建整个请求正文,但正如您已经指出的那样,这将是一个跨域调用。通常的绕过技术适用。

解决方案是让提供 HTML 的服务器为您完成 skydrive 请求。在这种情况下,您将使用 HTML 表单或 javascript 上传文件。然后该文件将被“转发”到 skydrive 服务器。

如果您尝试通过 Javascript,请确保multipart/form-data正确获取格式。这是RFC

于 2012-07-01T16:19:55.033 回答