使用angularjs$http将内容类型设置为utf-8

使用angularjs$http将内容类型设置为utf-8,angularjs,utf-8,content-type,multipartform-data,Angularjs,Utf 8,Content Type,Multipartform Data,我正在将包含文件、文本等的表单上载到appengine blobstore: $http({ method: 'POST', url: the_url, transformRequest: formDataObject, data: event, headers: {'Content-Type': undefined} }) 请求通过以下标头成功发送: Content-Type:multipart/form-data; boundary=----WebK

我正在将包含文件、文本等的表单上载到appengine blobstore:

$http({
    method: 'POST',
    url: the_url,
    transformRequest: formDataObject,
    data: event,
    headers: {'Content-Type': undefined}
})
请求通过以下标头成功发送:

Content-Type:multipart/form-data; boundary=----WebKitFormBoundaryYeRxOO7y3qHNWd83
当我尝试将内容类型设置为“multipart/form data;charset=UTF-8”时,我丢失了边界,并在响应中得到一个错误:
错误的内容类型。请使用多部分。

添加UTF-8字符集的正确方法是什么?

根据RFC 1341:

如内容传输编码字段定义中所述,对于类型为“multipart”的实体,除了“7bit”、“8bit”或“binary”之外,不允许进行任何编码。在任何情况下,多部分分隔符和标题字段始终为7位ASCII,正文部分中的数据可以逐个部分进行编码,每个适当的正文部分都有内容传输编码字段。


因此,在这种情况下,您必须使用
内容传输编码
而不是
内容类型

我的解决方案是不更改任何内容:

结果表明,使用
标题:{'Content-Type':undefined}
是正确的。现在一切正常(我只更改了后端)

问题是webob忽略了编码,因此我认为编码是错误的。升级webob修复了此问题。难以检测的原因是,开发服务器默认使用新的webob,而生产服务器默认使用旧的webob版本,因为app.yaml中未指定新版本:

libraries:
- name: webob
  version: "1.2.3"

必须设置字符集,如下所示:
内容类型:多部分/表单数据;boundary=--WebKitFormBoundaryYO7Y3QHNWD83;charset=UTF-8

我很困惑。我使用的是FormData追加方法。我不知道如何/在哪里设置内容传输编码。也许我需要对我的文本进行base64编码。将标题设置为:
headers:{'Content Transfer Encoding':'utf-8'}
而不是您现在拥有的内容。使用标题:{'Content Transfer Encoding':'utf-8'}我得到:拒绝设置不安全的标题“Content Transfer Encoding”angular.js:6649(匿名函数)angular.js:6649 q angular.js:203(匿名函数)angular.js:6648 y angular.js:6518 g angular.js:6252 r angular.js:9042 r angular.js:9042(匿名函数)angular.js:9128 g.$eval angular.js:9953 g.$digest angular.js:9809 g.$apply angular.js:10039(匿名函数)angular.js:15394(匿名函数)angular.js:2246 q angular.js:196 Nc.cHmm.那么我没有主意了。对不起,我已经把你的问题标记为正确的,因为它说明了一些情况&事实上我不需要utf-8。