ajax 跨域请求

有两种解决办法 
1:jQuery jsonp方式(据说不支持 POST,即使将 type 的值修改为 POST ,也会被当成 GET 请求) 
js示例代码 
function ajaxJsonp() { 
$.ajax({ 
url : “http://web2.lp.com:8080/MytestWeb/setcookie?ajaxType=jsonp” , 
type : “GET”, 
async : false, 
dataType : “jsonp”, 
jsonpCallback : “jsonpCallback”,//自定义的jsonp回调函数名,默认为jquery自动生成的随机函数 
jsonp : “callback”,//传递给请求处理程序或页面的,用以获得jsonp回调函数名的参数名(默认为callback) 
success : function(data) { 
alert( “服务器连接成功 ajaxJsonp” ); 
}, 
error : function(data) { 
alert( “服务器连接失败 ajaxJsonp” ); 

}); 
}

服务器端实例代码 
System.out.println(“servlet get jsonp”); 
String jsonp = request.getParameter( “callback”); 
response.setContentType( “text/html;charset=UTF-8”); 
PrintWriter out = response.getWriter(); 
out.write(jsonp + “({\”name\”:\”joy\”})” ); 
out.flush(); 
out.close();

2:CROS方式(如果要支持post请求,将ajax的type修改为 POST 就可以了) 
js示例代码,就是普通的ajax请求 
function ajax() { 
var url; 
url = “http://web2.lp.com:8080/MytestWeb/setcookie?ajaxType=native” ; 
$.ajax({ 
url : url, 
type : “GET”, 
async : false, 
success : function(data) { 
alert( “服务器连接成功 ajax” ); 
}, 
error : function(data) { 
alert( “服务器连接失败 ajax” ); 

}); 
}

服务器端实例代码 
//Access-Control-Allow-Origin 头的值为 * 表示服务器接受所有的不用源的请求,也可以是特定的域 例如:http://duobao.jd.com:8976(如果不是80端口, 
//一定要将端口号写上),注意 http 只能有一个 Access-Control-Allow-Origin头,头的值 只能是 * 或者 一个域(例如:http://duobao.jd.com:8976 )。 
response.setHeader( “Access-Control-Allow-Origin”, “*” ); 
PrintWriter out = response.getWriter(); 
out.write(“{\”name\”:\”joy\”}” ); 
out.flush(); 
out.close();

注意事项 
如果ajax中包含,contentType: “application/json” 请求方式为 POST 那么需要重写HttpServlet 中的 doOptions 方法

@Override 
protected void doOptions(HttpServletRequest request, HttpServletResponse response) { 
System. out.println( “doOptions request method ” + request.getMethod()); 
response.setHeader( “Access-Control-Allow-Origin”,”*” ); 
response.setHeader( “Access-Control-Allow-Headers”, “Origin, No-Cache, X-Requested-With, If-Modified-Since, Pragma, Last-Modified, Cache-Control, Expires, Content-Type”); 
}

同时 doPost 方法也要包含 方法 response.setHeader( “Access-Control-Allow-Origin”, “*” ) 代码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值