POST 请求标头中的内容类型缺少 FormData 边界
Posted
技术标签:
【中文标题】POST 请求标头中的内容类型缺少 FormData 边界【英文标题】:FormData boundary missing from content-type in POST request header 【发布时间】:2015-02-28 22:06:45 【问题描述】:我使用的代码与我在类似项目中成功用于文件上传的代码相同,但由于某种原因,边界从未添加到请求标头中的 content-type 属性中。这导致我的 C# web-api 函数无法检测到图像。
这是我使用 angularjs 的帖子请求:
var formData = new FormData($('#testform')[0]);
$http(
url: serviceBase + 'api/Client/' + item.practiceID + '/SavePhoto',
method: "POST",
data: formData,
headers: 'Content-Type': false ,
transformRequest: function (data) return data;
).success(function (response)
).error(function ()
);
这是请求的样子:
Request URL:http://localhost:56769/api/Client/178/SavePhoto
Request Headers
Provisional headers are shown
Accept:application/json, text/plain, */*
Authorization:Bearer JfDnrAIkSttZ8GnHa-Wo9wBH-HVWpbiUgGSic11DF_OlTgseuTPgTisxybvEyw2fEyer1FJ7DjKWqK15P-ZdhO_X1aHp7-GiIW2Q4BTF5svTyJKWtM2jk-XEN6qXuEIhAi6-phryd_LlGLOlLMYMKhQZGULxdyk_dUvDGt6bY5Z0L-LbV5uc74q3MyLMMj_vypNgbFCAxGEAGeeeGlP7jwlyyz7EY-eRfRhXxjFqOjI
Content-Type:false
Origin:http://localhost:58431
Referer:http://localhost:58431/index.html
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36
Request Payload
------WebKitFormBoundary6padOMi9aJxqx34h
Content-Disposition: form-data; name="profile-photo"; filename="Jellyfish.jpg"
Content-Type: image/jpeg
------WebKitFormBoundary6padOMi9aJxqx34h--
有谁知道是什么原因导致无法在 content-type 参数中生成边界?
【问题讨论】:
【参考方案1】:尝试将Content-Type
标头传递为undefined
而不是false
:
headers: 'Content-Type': undefined
【讨论】:
非常感谢,过去几个小时我一直在为这个问题摸不着头脑。知道为什么 content-type : false 会突然不起作用吗?我猜它可能与 jquery 或 angularjs 版本相关,但除此之外我不知道。以上是关于POST 请求标头中的内容类型缺少 FormData 边界的主要内容,如果未能解决你的问题,请参考以下文章
Zend_Http_Client - 为啥我的 POST 请求发送错误的内容类型标头?
缺少使用 WebClient 发送 POST 请求的 Content-Length 标头(SpringBoot 2.0.2.RELEASE)
Alamofire POST 请求,正文中有一个简单的字符串作为参数,标头仍然显示缺少的参数值