我在本地计算机上部署了一些休息服务(在localhost上运行)。我正在使用我的角度js应用程序访问这些服务。但是当我在firefox中部署它时,我得到了跨源请求阻止异常但我可以在其他浏览器IE和Chrome上部署相同的角度应用程序。请帮我解决这个问题。
的ErrorMessage:
跨源请求已阻止:同源策略禁止在http://localhost:8080/helloworld/rest/sayhi读取远程资源。这可以通过将资源移动到同一域或启用CORS来解决。
$ http({url:'http://localhost:8080/helloworld/rest/sayhi/'+ $ scope.userquery,方法:'GET',dataType:'json',
transformResponse:function(data){
console.log(“transformlog”+ data);
return JSON.parse(data);
},
标题:{
'Content-Type':'application / json'
然后(function(data){console.log(data);});
spring mvc服务托管在tomcat服务器中。服务器都是浏览器都在某台机器上。
答案 0 :(得分:0)
http://patrickgrimard.com/2013/12/12/cross-origin-resource-sharing-cors-requests-with-spring-mvc/
我按照上面的链接。我使用过滤器在我的spring-mvc-rest控制器中添加了Cors标头,它对我来说非常适合。
答案 1 :(得分:0)
我认为,实际上它在服务器端是个问题。您应该在spring应用程序上启用CORS支持。可以通过添加过滤器
来完成public class CORSFilter extends OncePerRequestFilter {
private final Logger LOG = LoggerFactory.getLogger(CORSFilter.class);
@Override
protected void doFilterInternal(HttpServletRequest req, HttpServletResponse res, FilterChain chain) throws ServletException, IOException {
LOG.info("Adding CORS Headers ........................");
res.setHeader("Access-Control-Allow-Origin", "*");
res.setHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS");
res.setHeader("Access-Control-Max-Age", "3600");
res.setHeader("Access-Control-Allow-Headers", "X-PINGOTHER,Content-Type,X-Requested-With,accept,Origin,Access-Control-Request-Method,Access-Control-Request-Headers,Authorization");
res.addHeader("Access-Control-Expose-Headers", "xsrf-token");
if ("OPTIONS".equals(req.getMethod())) {
res.setStatus(HttpServletResponse.SC_OK);
} else {
chain.doFilter(req, res);
}
}
}
找到的