可以't在$.ajax中设置自定义标头

Can't set custom headers in $.ajax

本文关键字:设置 自定义 ajax 可以      更新时间:2023-09-26

我决定尝试使用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并不意味着它会对您有所帮助。