跨域问题
来源:互联网 发布:mac的jdk路径 编辑:程序博客网 时间:2024/06/14 07:47
跨域:跨当然是跨过去,域当然是别的服务器 (说白点就是去别服务器上取东西) 只要协议、域名、端口有任何一个不同,都被当作是不同的域;
下面提供两个方式解决跨域
1.jsonp方式:
网页端:
$.ajax({
type:'get',
url:'http://192.168.1.110:8080/NeoTest/userController/showUser',
dataType:'jsonp',
jsonp:"jsonpCallback",
data:{"name":'5'},
success:function(data){
console.log('data:'+JSON.stringify(data ));
},
error:function(err){
console.log('err:'+err);
}
})
server端:
HttpServletResponse response;
try {
response.setContentType("text/plain");
response.setHeader("Pragma", "No-cache");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 0);
Map<String,String> map = new HashMap<String,String>();
map.put("result", "content");
PrintWriter out = response.getWriter();
JSONObject json=new JSONObject();
String jsonpCallback = request.getParameter("jsonpCallback");//客户端请求参数
User user=this.userService.getUserById(2);
json.put("user", user);
out.println(jsonpCallback+"("+json.toString()+")");//返回jsonp格式数据
out.flush();
out.close();
} catch (IOException e) {
e.printStackTrace();
}
2.CORSFilter
网页端:
$.ajax({
type:'get',
url:'http://192.168.1.110:8080/NeoTest/userController/showUser',
dataType:'json',
data:{"name":'5'},
success:function(data){
console.log('data:'+JSON.stringify(data ));
},
error:function(err){
console.log('err:'+err);
}
})
server端:
public class CORSFilter implements Filter {
private static int count=1;
public CORSFilter() {
}
@Override
public void destroy() {
}
@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)
throws IOException, ServletException {
HttpServletResponse response=(HttpServletResponse) res;
response.setHeader("Access-Control-Allow-Origin", "*");
response.setHeader("Access-Control-Allow-Methods", "POST, GET, PUT, OPTIONS, DELETE");
response.setHeader("Access-Control-Max-Age", "3600");
response.setHeader("Access-Control-Allow-Headers", "x-requested-with, Content-Type");
response.setHeader("Access-Control-Allow-Credentials", "true");
chain.doFilter(req, res);
System.out.println("***filter***"+count++);
}
@Override
public void init(FilterConfig arg0) throws ServletException {
}
}
然后在web.xml配置
<filter>
<filter-name>CORSFilter</filter-name>
<filter-class>cn.zhang.core.CORSFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>CORSFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
即可。
以上。
谢我跟你急!就是这么不要脸。。。
- Ajax请求缓存问题、中文乱码问题、跨域问题
- birt session 过期问题,跨域问题
- cookie跨域问题
- Cookie跨域问题
- JS跨域问题
- javascript跨域问题
- ajax跨域问题
- 跨域问题
- JS跨域问题
- JavaScript跨域问题
- weblogic跨域问题
- AJAX跨域问题
- js跨域问题
- javaScript跨域问题
- 跨域问题
- 跨域问题
- Flex跨域问题
- 跨域问题
- Android 之 Handler 使用
- 【socket编程】如何理解同步异步与阻塞非阻塞的区别(转)
- 登陆和分享
- 从零开始学YII2框架(一)通过Composer安装Yii2框架
- 初始化程式前关闭同名进程
- 跨域问题
- XunSearch(讯搜)的使用教程步骤
- github学习(3)--工作区和暂存区
- spring 的ioc与di
- 开源DBCP、C3P0、Proxool 、 BoneCP连接池的比较
- @Validator验证
- 峻山电站1800调速器照片
- 第8课:彻底实战详解使用IDE开发Spark程序
- 解决Linux系统下(交叉)编译出现“cannot find -lxxx”的错误 (ubuntu)