xhr headers formData
时间: 2023-08-03 11:08:52 浏览: 226
在使用XMLHttpRequest (XHR)对象发送formData请求时,可以通过设置请求头(headers)来传递一些信息,例如token等。可以使用setRequestHeader方法来设置请求头。具体代码如下:
```
const xhr = new XMLHttpRequest();
const formData = new FormData();
formData.append('username', '张三');
formData.append('password', '123456');
xhr.open('POST', '/api/login');
xhr.setRequestHeader('Authorization', 'Bearer xxxxxxxx'); // 设置请求头
xhr.send(formData);
```
在这个例子中,我们创建了一个XMLHttpRequest对象,并使用FormData对象构造了参数。然后,我们使用open方法打开了一个POST请求,并设置了请求头Authorization,值为Bearer xxxxxxxx。最后,我们使用send方法将FormData对象作为请求体发送给服务器。
需要注意的是,当使用FormData对象作为请求体时,通常不需要手动设置Content-Type请求头,因为浏览器会自动将其设置为multipart/form-data。
相关问题
使用formData通过ajax上传文件到java后台Response Headers中出现了Accept属性值为application/x-www-form-urlencoded,报错415
HTTP 415 Unsupported Media Type 状态码通常用于表示服务器无法处理请求的媒体类型。在你的情况下,服务器期望请求的媒体类型为multipart/form-data,但你发送的请求的媒体类型为application/x-www-form-urlencoded,这就导致了报错。
你需要在发送请求时指定正确的Content-Type,如下所示:
```javascript
var formdata = new FormData();
formdata.append("file", file);
$.ajax({
url: "your_url",
type: "POST",
data: formdata,
processData: false,
contentType: false,
success: function(response) {
// 成功处理响应
},
error: function(xhr, status, error) {
// 处理错误
}
});
```
上面代码中,需要设置processData和contentType为false,以便让浏览器自动识别Content-Type,并且不将数据转换为查询字符串。
formdata提交乱码
如果你使用的是前端框架如 Vue 或 React,可以在发送请求时设置请求头的Content-Type为"application/x-www-form-urlencoded;charset=UTF-8",如下示例:
```
axios({
method: 'post',
url: 'your_url',
data: qs.stringify(your_data),
headers: {
'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8'
}
})
```
如果你是手动构造表单提交,可以使用encodeURIComponent编码每个参数的值,如下示例:
```
var xhr = new XMLHttpRequest();
xhr.open('POST', 'your_url');
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded;charset=UTF-8');
xhr.onload = function () {
// handle response
};
var formData = new FormData();
formData.append('param1', encodeURIComponent('参数1的值'));
formData.append('param2', encodeURIComponent('参数2的值'));
xhr.send(formData);
```
注意,对于中文等非ASCII字符,需要先进行encodeURIComponent编码,再进行表单提交。
阅读全文