原理部分: 它的请求和响应是两次的
预请求 ——》 预响应 判断是否可以连接
然后是真正的请求和响应数据
域:主机名
跨域: 在一个项目的页面上访问另一个项目的后台,就叫跨域
只要访问的协议,主机,端口有一个不一样,就是跨域
默认JS是不能进行跨域请求,因为不安全。
JSONP:JS和后台进行都修改才可以。
**使用方法: 在Controller层 方法内添加这个两句话
http://localhost:9105这个服务器 想要访问本服务器,这里意思是允许它访问 ,如果想要操作和携带cookie则需要后面一句
http://localhost:9105可以用* 代替 表示允许所以服务器访问,但是如果携带操作cookie则需要明确地址
response.setHeader("Access-Control-Allow-Origin", "http://localhost:9105"); //
response.setHeader("Access-Control-Allow-Credentials", "true");
//如果真的要操作cookie 则在 http://localhost:9105 需要添加{'withCredentials':true} 允许操作cookie ,不操作cookie不需要第二句和这个
$scope.addToCart=function(){
$http.get('http://localhost:9107/cart/addGoodsToCartList.do?itemId='+ $scope.sku.id +'&num='+$scope.num,{'withCredentials':true}).success(
function(response){
.......
}
);
}
//使用springmcv注解 配置:
@CrossOrigin(origins="http://localhost:9105",allowCredentials="true")
js部分还是要加上{'withCredentials':true}
实例:
静态化页面走购物车
//添加商品到购物车
$scope.addToCart=function(){
$http.get('http://localhost:9107/cart/addGoodsToCartList.do?itemId='
+ $scope.sku.id +'&num='+$scope.num,{'withCredentials':true}).success(
function(response){
if(response.success){
location.href='http://localhost:9107/cart.html';//跳转到购
物车页面
}else{
alert(response.message);
}
}
);
}