无法在$ .ajax中设置自定义标头

我决定尝试使用jQuery一次,因为它已经包含在页面中。 我发现它有非常方便的$.ajax方法,允许您生成可读的Ajax调用。

我学习了如何在调用中添加自定义标头 ,因为我需要在Imgur上进行授权。 这是我的代码:

  $.ajax({ url: 'https://api.imgur.com/3/image', type: 'POST', headers: { Authorization: 'Client-ID ' + APP_ID, Accept: 'application/json' }, data: { image: SavePage.getimgrc(), type: 'base64' }, success: function(result) { var id = result.data.id; window.location = 'https://imgur.com/gallery/' + id; } }); 

好吧,不管它多么方便,它不像宣传的那样工作:

 POST /3/image HTTP/1.1 Host: api.imgur.com User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:30.0) Gecko/20100101 Firefox/30.0 Accept: */* Accept-Language: en-US,en;q=0.5 Accept-Encoding: gzip, deflate Content-Type: application/x-www-form-urlencoded; charset=UTF-8 Content-Length: 20956 Origin: resource://jid0-gxjllfbcoax0lcltedfrekqdqpi-at-jetpack Connection: keep-alive Pragma: no-cache Cache-Control: no-cache 

那么,它是破碎还是我搞砸了?

所以我终于弄明白了。 问题是,尽管我以前的经历,我使用的是jQuery。 本机代码正常工作:

  var r = new XMLHttpRequest(); r.open("POST", 'https://api.imgur.com/3/image'); r.setRequestHeader("Authorization", 'Client-ID ' + APP_ID); r.setRequestHeader("Accept", 'application/json '); var data = new FormData(); data.append("type", "base64"); data.append("image", SavePage.getimgrc()); r.send(data); 

获得的经验:jQuery包含在网站上的事实并不意味着它会对你有所帮助。