0

我在该位置存储了一个 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);});

但这给了我一个空白响应,当我使用我的萤火虫检查时,它显示 XML Parsing Error: no element found Location: moz-nullprincipal:{1e7688d3-7b3c-43ae-9142-5b183a7cbfda} 第 1 行,第 1 列:在 XML标签

4

1 回答 1

1

您正在进行不允许的跨源调用。您正在呼叫:http://localhosthttp://localhost:8080。调用没有执行,也不会有响应。Chrome/Safari 将在控制台中显示如下错误:

XMLHttpRequest 无法加载http://targeturlOriginhttp://localhost是 Access-Control-Allow-Origin 不允许的。

更多信息:http ://en.wikipedia.org/wiki/Same_origin_policy#Origin_determination_rules

如果您可以对后端进行修改,使其发送正确的标题,将解决您的问题......(Access-Control-Allow-Origin yourdomainAccess-Control-Allow-Origin *允许所有)

更多信息:http ://enable-cors.org

还有几个其他选项要完成......

  • 如果您使用 apache:您可以使用apache 代理将端口 8080 上的位置转发(映射)到不同的端口(如默认端口 80)我刚刚发布了一个关于它的问题/答案......
  • 您也可以使用通过脚本标签加载资源的技术来使用jsonP(它不是 xml,而是 json),如果您的 json 适合它,您可以加载 json。(包装它一个回调函数调用)
  • 如果你不能这样做,你唯一的选择就是代理脚本。代理脚本是一种中间件。您向脚本发出请求,脚本获取数据并将其返回给您。例如php 代理。你可以在 asp、jsp、flash 甚至 java applet 中做同样的事情。
于 2012-09-03T09:37:29.667 回答