当在AngularJS中使用帖子时,内容类型总是让我困惑。 内容类型:
...
$http({
headers: {'Content-Type': undefined},
processData: false,
method: 'POST',
cache: false,
url: sendUrl,
data: sendObj,
transformRequest: function (data, headersGetterFunction) {
return data; // do nothing! FormData is very good!
}
})
我使用文件对象发布JSON数据。
我发现内容类型必须设置为undefined。这是some clue。但我不知道为什么必须设置为undefined。
答案 0 :(得分:1)
您需要将内容类型设置为undefined
,以便浏览器自己生成一个。文件上传需要多部分请求,并且需要部件之间的边界。因此,生成的Content-Type
标题如下所示:
Content-Type=multipart/form-data; boundary=---------------------------99614912995
请注意boundary=
。该值由浏览器生成,您无法自行设置。
您需要设置transformRequest
的原因是Angular会将您的数据作为JSON发送,因为这是默认转换。但你可以缩短它:
transformRequest: angular.identity,