我想发送 new FormData()
作为 body
的 POST
请求使用 获取 api
该操作看起来像这样:
var formData = new FormData()
formData.append('myfile', file, 'someFileName.csv')
fetch('https://api.myapp.com',
{
method: 'POST',
headers: {
"Content-Type": "multipart/form-data"
},
body: formData
}
)
这里的问题是边界,比如
boundary=----WebKitFormBoundaryyEmKNDsBKjB7QEqu
永远不会进入 Content-Type:
标头
它应该是这样的:
Content-Type:multipart/form-data; boundary=----WebKitFormBoundaryyEmKNDsBKjB7QEqu
当您使用 new XMLHttpRequest()
尝试“相同”操作时,如下所示:
var request = new XMLHttpRequest()
request.open("POST", "https://api.mything.com")
request.withCredentials = true
request.send(formData)
标题设置正确
Content-Type:multipart/form-data; boundary=----WebKitFormBoundaryyEmKNDsBKjB7QEqu
所以我的问题是:
- 在这种情况下,如何使
fetch
的行为与XMLHttpRequest
完全一样? - 如果这是不可能的,为什么?
谢谢大家!这个社区或多或少是我取得职业成功的原因。
原文由 James 发布,翻译遵循 CC BY-SA 4.0 许可协议
该问题的解决方案是将
Content-Type
显式设置为undefined
以便您的浏览器或您使用的任何客户端都可以设置它并在其中为您添加该边界值。令人失望但真实。