JavaScript跨域的解决方案有以下几种:CORS、JSONP、iframe,详见:http://blog.csdn.net/zhouziyu2011/article/details/53057480
下面谈谈JSONP跨域:
JSONP跨域只能是get请求,而不能是post请求。
即使设置type: post,jQuery也会自动转为 get方式来提交。
也就是说,不论指定type:"post"还是type:"get",type参数始终是"get",其实质上都是get请求。
在开发者工具里可见"METHOD"始终为"GET"。
如果将服务端相应的Servlet中的doGet()方法注释掉,跨域访问将不能进行。
解决方法:
(1)客户端:
- 添加:crossDomain: true
- 修改:dataType: "json"
(2)服务端:
- 添加:header('Access-Control-Allow-Origin: *');
- 添加:header('Access-Control-Allow-Methods: POST');
- 添加:header('Access-Control-Max-Age: 1000');
不足:
耗时很长。