我有XML和JSON格式的REST服务:
http://localhost:5050/rest/rest/report/check/ {ID} / {校验} .XML http://localhost:5050/rest/rest/report/check/ {ID} / {校验}上传.json
示例:调用http://localhost:5050/rest/rest/report/check/420/339d9146ddd3d6646a1fe93ddf4d7ab8c4a51c61.xml将返回结果:
<report>
<id>420</id>
<checksum>339d9146ddd3d6646a1fe93ddf4d7ab8c4a51c61</checksum>
<checksumValid>true</checksumValid>
<reportName>sprawozdanie 1</reportName>
<userName>John Smith</userName>
<state>robocze</state>
</report>
现在我想从JQuery调用REST服务(xml或json,我不在乎)。
我的工作是:
$.ajax({
type:"GET",
url:"http://127.0.0.1:5050/rest/rest/report/check/" + obj.id + "/" + obj.checksum + ".xml",
success:function (data, textStatus) {
alert('success...');
},
error:function (xhr, ajaxOptions, thrownError) {
alert("thrown: '" + thrownError + "', status: '"
+ xhr.status + "', status text: '"
+ xhr.statusText + "'");
}
});
我最终调用了错误函数,结果为:
抛出:'',状态:'0',状态文字:'错误'
我做错了什么?
答案 0 :(得分:2)
由于原始政策相同,您需要使用localhost
代替127.0.0.1
。
答案 1 :(得分:0)
好的,所以这个问题很简单,显然我以前习惯了它并且忘了它(该死的我需要一个维基:))。
问题所谓的“跨域”在我的spring-mvc休息项目中被聋人所禁止。
我所做的是创建一个新的过滤器
public class OptionsHeadersFilter implements Filter {
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)
throws IOException, ServletException {
HttpServletResponse response = (HttpServletResponse) res;
response.setHeader("Access-Control-Allow-Origin", "*");
response.setHeader("Access-Control-Allow-Methods", "GET,POST,PUT,DELETE");
response.setHeader("Access-Control-Max-Age", "360");
response.setHeader("Access-Control-Allow-Headers", "x-requested-with");
chain.doFilter(req, res);
}
public void init(FilterConfig filterConfig) {
}
public void destroy() {
}
}
并将其添加到我的web.xml
中<filter>
<filter-name>OptionsHeadersFilter</filter-name>
<filter-class>poi.rest.OptionsHeadersFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>OptionsHeadersFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
答案 2 :(得分:0)
同意相同的原产地政策。这是测试是否是这种情况的快速方法:
如果有效,那么您的问题是相同的原始政策。此策略对于在开发环境中工作非常痛苦,因为您必须在同一主机上托管您的Web服务(不允许别名)和端口作为托管JavaScript的站点。
您可以使用代理服务器通过同一服务器托管服务和网站。本文是Apache(WAMP)的一个很好的参考,如果你碰巧使用它: