$("#qwer").click(function(){ $.ajax({ type : "POST",url : ctx + "/test/aaa?callback=?",//url : "" dataType : 'json',success : function(data) { alert('sssss'); } }); });
ajax跨域:ajax本身实际上是通过XMLHttpRequest对象来进行数据的交互,而浏览器出于安全考虑,不允许js代码进行跨域操作,所以会警告
如果服务端和客户端我们都可以控制,对服务端进行改造,跨域请求添加一个参数callback可以随意设置,这个参数加在url请求的后面,服务端响应请求后需要在返回的数据外面包裹一层:包裹callback参数名称(json数据)
response.setContentType("application/json;charset=utf-8"); response.getWriter().write(request.getParameter("callback") + "(" + new Gson().toJson(result.getResult()) + ")");
另一种方法:cors跨域资源共享【网络浏览器的技术规范,为web服务器定义了一种方式,允许网页从不同的域访问它的资源】通过在服务端设置"Access-Control-Allow-Origin"来进行的
Access-Control-Allow-Origin。HTTP响应头,指定服务器端允许进行跨域资源访问的来源域。可以用通配符*表示允许任何域的JavaScript访问资源,但是在响应一个携带身份信息(Credential)的HTTP请求时,Access-Control-Allow-Origin必需指定具体的域,不能用通配符。
在地址url前加前缀:"http://www.corsproxy.com/"将不允许跨域的请求变为允许跨域的请求
www.corsproxy.com
大概是在今年2月份左右挂掉的,具体信息和关闭理由未知。
能应用于所有的跨域请求,原理就是过一遍代理然后在header里写上
现在的替代站点有 http://crossorigin.me/ 和 http://atcors.herokuapp.com/ 。国内不清楚,不过北美这边相应速度倒是挺快的。
或者你可以选择自己搭一个专用的。 corsproxy-npm
能应用于所有的跨域请求,原理就是过一遍代理然后在header里写上
Access-Control-Allow-Origin:*
现在的替代站点有 http://crossorigin.me/ 和 http://atcors.herokuapp.com/ 。国内不清楚,不过北美这边相应速度倒是挺快的。
或者你可以选择自己搭一个专用的。 corsproxy-npm
现在只能在自己的后端代码加
respons.setHeader("Access-Control-Allow-Origin","*");