问题描述:
本地已经实现的restful接口,在地址栏输入url:loaclhost:8080/admins即可得到预期的json字符串,在网页上显示如下:
[{"id":1,"adminId":1,"adminName":"zuo","adminAge":21,"adminPassword":"zf1110","adminChange":"yxy"},{"id":2,"adminId":2,"adminName":"melon","adminAge":21,"adminPassword":"1111","adminChange":"yxy"},{"id":8,"adminId":222,"adminName":"zzzz","adminAge":88,"adminPassword":"zuodepass","adminChange":null}]
现在遇到一个问题:
当通过打开我本地的html文件,通过ajax访问url获取json字符串的时候,返回403,不能访问
经过查证,是因为调用不是本网站的url导致的,网站开发中出于安全性考虑,默认不允许通过调用外部网站的资源;
ajax如下:
$.ajax({
url: "http://localhost:8080/admins",
type: 'get',
contentType: "application/json; charset=utf-8",
success:function (data) {
console.log("zzzzzz");
console.log(data);
//调用成功
},
error: function(data, textStatus, errorThrown){
//调用失败
console.log("ppppppp");
}
});
这时候必须要实现CORS资源共享实现;
既然是403,那一定是服务器请求不到资源;
但是,前面也说到了,url可以正常调用,后台也有正常的sql打印出来;
所以归根到底,是服务器配置的问题;
在web.xml添加:
<mvc:cors>
<mvc:mapping path="/**" />
</mvc:cors>
开启 cors即可。
满足条件:spring 4.2+
通过查阅资料:
CORS原理:http://www.ruanyifeng.com/blog/2016/04/cors.html 阮一峰讲解的很透彻
具体解决方案: http://blog.csdn.net/isea533/article/details/50449907 除了修改xml,还有其他的配置方案;