在JavaScript中获取表单的HTTP正文

是否有可能在Javascript中获取提交表单时发送的HTTP请求的HTTP正文内容?

假设我有一个带有文件输入和其他一些输入字段的'POST'类型的表单,以及'multipart / form-data'的enctype属性。 如果我提交了表单(实际上没有提交它),我希望获得浏览器生成的请求的逐字逐句HTTP正文和可能的HTTP标题。


您可以使用ResponseResponse.body.getReader()这是一个ReadableStream来读取FormData对象的内容。 使用TextDecoderUint8Array转换为可读文本。 请注意,您无法从相同的Response对象读取流和标题。 尽管可以从相同的输入数据和读取的Headers创建一个新的Response对象

var form = document.querySelector("form");
form.onsubmit = (e) => {
  e.preventDefault();
  var formData = new FormData();
  var input = e.target.querySelector("input");
  formData.append("file", input.files[0], input.files[0].name);

  var response = new Response(formData);
  var stream = response.body;
  var reader = stream.getReader();
  var decoder = new TextDecoder();
  reader.read()
    .then(function processData(result) {
      if (result.done) {
        console.log("stream done");
        return;
      }
      var data = decoder.decode(result.value);
      console.log(data);

      return reader.read().then(processData);
    })
    .catch(function(err) {
      console.log("catch stream cancellation:", err);
    });

  reader.closed.then(function() {
    console.log("stream closed");
  });
}
<form method="POST" enctype="multipart/form-data">
  <input name="file" type="file" />
  <input type="submit">
</form>

没有。没有公开这些信息的API。

您可以尝试手动构建请求,但无法让浏览器为您做好准备。

链接地址: http://www.djcxy.com/p/41343.html

上一篇: Get HTTP Body of Form in JavaScript

下一篇: Sending binary data with HttpURLConnection