当我无法访问服务器时,如何让jQuery调用REST服务而不获取访问控制允许源错误?

当我无法访问服务器时,如何让jQuery调用REST服务而不获取访问控制允许源错误?,jquery,cross-domain,jsonp,Jquery,Cross Domain,Jsonp,我试图使用jQuery查询返回XML的RESTful服务。我无法访问服务器,因此无法更改它提供的输出或标题 我收到的响应是xml,但我当然会收到一个跨站点脚本错误 为了解决这个问题,我尝试使用jsonp,但由于我接收的格式是xml,因此也会出现错误:(资源被解释为脚本,但使用MIME类型application/xml传输) 使用Safari Web Inspector,我确实在内容中看到了xml响应,那么有没有办法防止此错误并继续使用xml 我希望这是有道理的。以下是我尝试过的代码供参考: 首先

我试图使用jQuery查询返回XML的RESTful服务。我无法访问服务器,因此无法更改它提供的输出或标题

我收到的响应是xml,但我当然会收到一个跨站点脚本错误

为了解决这个问题,我尝试使用jsonp,但由于我接收的格式是xml,因此也会出现错误:(资源被解释为脚本,但使用MIME类型application/xml传输)

使用Safari Web Inspector,我确实在内容中看到了xml响应,那么有没有办法防止此错误并继续使用xml

我希望这是有道理的。以下是我尝试过的代码供参考:

首先是导致错误的原始ajax查询:XMLHttpRequest无法加载。Access Control Allow Origin不允许使用Origin(我在PC上使用它进行开发时,它是localhost——我还尝试部署到web服务器)

接下来是jsonp尝试,它返回xml,但导致资源被解释为脚本,但使用MIME类型application/xml传输。错误。我还尝试了数据类型:“JSONPText”和其他变体

     $.ajax({
      url: 'https://the-rest-url/xxx',
      success: function() {alert("success");},
      error: function() {alert("error")},
      dataType: "jsonp",
      jsonp: "jsonpCallback"
}); 
非常感谢您的帮助。
谢谢。

除了JSONP之外,我不知道客户端跨域请求的可靠解决方法。尽管从1.5版开始,jQuery可以以JSON以外的格式接收响应,但该响应必须与JSONP兼容,即封装在提供的回调中。在您的情况下,您可能别无选择,只能为要请求的数据实现服务器端包装(PHP的一个示例),使其看起来来自同一个域。

除了JSONP之外,我不知道客户端跨域请求的可靠解决方法。尽管从1.5版开始,jQuery可以以JSON以外的格式接收响应,但该响应必须与JSONP兼容,即封装在提供的回调中。在您的情况下,您可能别无选择,只能为要请求的数据实现一个服务器端包装器(PHP的一个示例),以便它看起来来自同一个域。

谢谢。虽然我怀疑,但我希望这不是答案;)但最终,我想把它放到一个Google小工具中,这样我就不能使用服务器端包装了,是吗?或者完全使用谷歌小工具还有其他方法吗?再次感谢。没有什么可以阻止您创建一个返回JSONP.Thankyou的包装器。虽然我怀疑,但我希望这不是答案;)但最终,我想把它放到一个Google小工具中,这样我就不能使用服务器端包装了,是吗?或者完全使用谷歌小工具还有其他方法吗?再次感谢。没有什么可以阻止您创建返回JSONP的包装器。
     $.ajax({
      url: 'https://the-rest-url/xxx',
      success: function() {alert("success");},
      error: function() {alert("error")},
      dataType: "jsonp",
      jsonp: "jsonpCallback"
});