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

时间:2014-10-19 18:46:13

标签: javascript jquery ajax

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

我学习了如何add custom headers来电话,因为我需要在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

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

1 个答案:

答案 0 :(得分:0)

所以我终于弄明白了。问题是,尽管我以前的经历,我使用的是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包含在网站上这一事实并不意味着它会对你有所帮助。