我有一个 xml 内容存储在该位置,http://localhost:8080/cleo-primer/rest/elements/search?uid=1&query=facebook
<element-list><element><term>facebook</term><name>Bing Facebook</name></element></element-list>
我正在发送一个获取请求
$.get('http://localhost:8080/cleo-primer/rest/elements/search', { uid: 1, query: request.term }, function(responseData){alert(responseData);});
但这给了我一个空白响应,当我使用 firebug 检查时,它显示 XML Parsing Error: no element found Location: moz-nullprincipal:{1e7688d3-7b3c-43ae-9142-5b183a7cbfda} Line Number 1, Column 1: inside XML标签
您正在进行不允许的跨源调用。您从以下地方致电:http://localhost
to http://localhost:8080
。调用不会被执行,并且不会有任何响应。 Chrome/Safari 将在控制台中显示如下错误:
XMLHttpRequest 无法加载http://targeturl
Origin http://localhost
Access-Control-Allow-Origin 不允许。
更多信息:http://en.wikipedia.org/wiki/Same_origin_policy#Origin_metry_rules http://en.wikipedia.org/wiki/Same_origin_policy#Origin_determination_rules
如果您可以对后端进行修改,使其发送正确的标头,将解决您的问题...(Access-Control-Allow-Origin yourdomain
or Access-Control-Allow-Origin *
允许所有)
更多信息:http://enable-cors.org http://enable-cors.org
还有几个其他选项需要完成......
- 如果您使用 apache:您可以使用阿帕奇代理将端口 8080 上的位置转发(映射)到另一个端口(例如默认端口 80)我已经发布了问题/答案 https://stackoverflow.com/questions/7807600/apache-mod-proxy-configuring-proxypass-proxypassreverse-for-cross-domain-ajax不久前关于这件事...
- 您还可以求助于jsonP(不是xml而是json)使用通过scripttag加载资源的技术,如果你的json适合它,你可以加载json。 (将其包装为回调函数调用)
- 如果你做不到,你唯一的选择就是代理脚本。代理脚本是一种中间件。您向脚本发出请求,脚本获取数据并将其返回给您。例如PHP代理 http://jquery-howto.blogspot.de/2009/04/cross-domain-ajax-querying-with-jquery.html。您可以在 asp、jsp、flash 甚至 java applet 中制作同样的东西。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)