使用jQuery.ajax和JSONP设置标头?

时间:2010-06-18 21:51:45

标签: jquery ajax cross-domain header

我正在尝试使用jQuery访问google文档。这是我到目前为止所做的:

var token = "my-auth-token";
$.ajax({
  url: "http://docs.google.com/feeds/documents/private/full?max-results=1&alt=json",
  dataType: 'jsonp',
  beforeSend: function(xhr) {
    xhr.setRequestHeader("Authorization", "GoogleLogin auth=" + token);
  },
  success: function(data, textStatus, XMLHttpRequest) {
  },
  error: function(XMLHttpRequest, textStatus, errorThrown) {
  }
});

如果我将dataType设置为jsonp(来自Make Cross Domain Ajax Requests with jQuery),则不允许我设置标头。如果我遗漏jsonp,我就无法提出跨域请求。如果我使用jQuery.getJSON,我就无法传入任何标题......

在制作跨域ajax请求时(在jQuery中)有没有办法定义自定义标头?

1 个答案:

答案 0 :(得分:68)

这是不可能的。

JSONP请求的工作原理是创建<script>元素,并将src属性设置为请求网址。
您无法将自定义标头添加到<script>元素发送的HTTP请求中。