【问题标题】:Cross domain ajax request returning XML: Origin http://... is not allowed by Access-Control-Allow-Origin跨域 ajax 请求返回 XML:Access-Control-Allow-Origin 不允许 Origin http://...
【发布时间】:2012-01-29 01:30:35
【问题描述】:

这是对我不起作用的 jQuery 片段:

$.ajax({
  crossDomain: true,
  type: "POST",
  url: "https://www.testdatasolutions.com/reportgw",

  data: "ACCOUNT=creditreport123&PASSWD=asdj97sdf&PASS=2&PROCESS=PCCREDIT&NAME=Robert+Ice&SSN=891-42-3221&ADDRESS=111+W+8th+St&CITY=Fantasy+Island&STATE=IL&ZIP=60750&BUREAU=TU&PRODUCT=CREDIT&DEFAULTOUTPUT=XML"
})

 .done(function( msg ) {
  alert( "Data Saved: " + msg );
});

输出错误说:

XMLHttpRequest 无法加载 https://www.testdatasolutions.com/reportgw。 Access-Control-Allow-Origin 不允许来源http://pmr.techforge.us

可以在here 找到类似的主题,但它仅涵盖输出为 JSON 的情况。

所以我的问题是,是否可以处理返回 XML 的跨域 ajax 请求,还是我必须绝对使用 JSONP

【问题讨论】:

  • 另外,我尝试在您的示例中发出请求,服务器返回“无效帐户”页面。向您的 ajax 调用添加错误处理程序以查看实际发生的情况。
  • @Juank 那是因为你不在代理后面。

标签: jquery xml ajax request cross-domain


【解决方案1】:

必须是JSONP,默认不允许跨域请求XML。

但是,通过一些服务器端编程,您可以创建一个代理并通过 curl 或类似方式在您自己的域中的服务器端加载数据,并将其输出为 XML。这样您就可以访问自己域中的 url,而不必从客户端执行跨域请求,它是在“幕后”处理的。

【讨论】:

    【解决方案2】:

    你可以试试http://enable-cors.org/。您可以在http://en.wikipedia.org/wiki/Cross-Origin_Resource_Sharing#Browser_support 查看支持 CORS 的浏览器列表。

    【讨论】:

      猜你喜欢
      • 2013-11-23
      • 2013-11-08
      • 2013-03-10
      • 2013-05-16
      • 2013-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多