该问题在 Firefox 中会报错:
已拦截跨源请求:同源策略禁止读取位于 http://XXXX/x 的远程资源。(原因:CORS 头缺少 'Access-Control-Allow-Origin')
同源策略:(来自百度)
同源策略(Same origin policy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。可以说Web是构建在同源策略基础之上的,浏览器只是针对同源策略的一种实现。
所谓的同源是指:域名、协议、端口相同。
第一种,在被请求的代码中添加HTTP头,即CORS跨域(跨域资源共享,Cross-Origin Resource Sharing)
如: Response.Headers.Add("Access-Control-Allow-Origin", "*"); // JSON { 'Access-Control-Allow-Origin': '*', } // HTML <meta http-equiv="Access-Control-Allow-Origin" content="*">
第二种,使用JSONP格式,即在jQuery中ajax请求参数dataType:'JSONP',dataType:'JSONP', // 处理Ajax跨域问题
java、jquery、ajax跨域请求获取返回值(jsonp格式):
$.ajax({ url:appurl, type:"POST", dataType:"jsonp", jsonp:"callbackparam",//传递给请求处理程序或页面的,用以获得jsonp回调函数名的参数名 jsonpCallback:"success_jsonpCallback", success:function(data) { alert(data); }, error:function(data) { alert("error"); } });
servlet代码:
StringjsonpCallback=request.getParameter("callbackparam"); response.getWriter().write(jsonpCallback+"("+json+")"); //json为返回的参数