在JavaScript中获取表单的HTTP正文
是否有可能在Javascript中获取提交表单时发送的HTTP请求的HTTP正文内容?
假设我有一个带有文件输入和其他一些输入字段的'POST'类型的表单,以及'multipart / form-data'的enctype属性。 如果我提交了表单(实际上没有提交它),我希望获得浏览器生成的请求的逐字逐句HTTP正文和可能的HTTP标题。
您可以使用Response
, Response.body.getReader()
这是一个ReadableStream
来读取FormData
对象的内容。 使用TextDecoder
将Uint8Array
转换为可读文本。 请注意,您无法从相同的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