我试图通过webbrowser(FF 42.0,PhantomJS 1.9.8)和Dropbox v2 api将数据上传到Dropbox。我的功能看起来像这样从浏览器使用Dropbox v2 API
function(path, data, callback) {
$.ajax({
url: 'https://content.dropboxapi.com/2/files/upload',
type: 'post',
contentType: 'application/octet-stream',
beforeSend: function(jqXHR) {
jqXHR.setRequestHeader("Content-Type","application/octet-stream");
},
data: data,
headers: {
"Authorization": "Bearer " + token,
"Dropbox-API-Arg": '{"path": "' + path + ',"mode": "add","autorename": true,"mute": false}',
"Content-Type": "application/octet-stream"
},
success: function (data) {
callback(data);
}
});
}
即使我设置Content-Type的所有属性,我能想到的application/octet-stream
我收到以下错误
Error in call to API function "files/upload": Bad HTTP "Content-Type" header: "application/octet-stream
; charset=UTF-8". Expecting one of "application/octet-stream", "text/plain; charset=dropbox-cors-hack"
考虑看看萤火虫请求显示我Content-Type确实设置为application/octet-stream; charset=UTF-8
。当尝试text/plain; charset=dropbox-cors-hack
作为内容类型发送的请求有text/plain; charset=UTF-8
,并且我得到相同的错误消息。
如何让jquery和我的浏览器设置我需要的标题。
编辑:在Chrome 相同的行为IE按预期工作
奇妙的答案格雷格+1 我想将链接添加到TextEncoder沉,这可能是有用的因为所有浏览器都不支持TextEncoder:https://github.com/inexorabletash/text-encoding – Kai