失效链接处理 |
CORS跨域请求 PDF 下载
本站整理下载:
相关截图:
![]()
主要内容:
目标1:掌握跨域请求CORS解决方案
目标2:完成结算页收货人地址选择功能
目标3:完成结算页支付方式选择
目标4:完成结算页商品清单功能
目标5:完成保存订单功能
1.商品详细页跨域请求【CORS】
1.1需求分析
从商品详细页点击“加入购物车”按钮,将当前商品加入购物车,并跳转到购物车页面。
1.2什么是跨域请求
JavaScript在不同域名之间请求数据,域名不同或者端口不同的请求都叫跨域请求。由于JavaScript同源策略的限制,处于安全的考虑;js只能获取自己域名下的资源,不能跨域请求资源。
注意:只要协议、域名、端口有任何一个不同,都被当作是不同的域。
1.3 JS跨域请求测试
pinyougou-item-web/src/main/webapp/js/controller/itemController.js,引入$http,修改addToCart方法:
/** 商品详细页(控制层)*/
app.controller('itemController',function($scope,$controller,$http){
......
/** 添加SKU商品到购物车 */
$scope.addToCart = function(){
$http.get("http://cart.pinyougou.com/cart/addCart?itemId="
+ $scope.sku.id + "&num=" + $scope.num)
.then(function(response){
if (response.data){
/** 跳转到购物车页面 */
location.href='http://cart.pinyougou.com/cart.html';
}else{
alert("请求失败!");
}
});
};
});
发现无法Ajax跨域请求:
No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://item.pinyougou.com' is therefore not allowed access.
1.4跨域请求解决方案
1.4.1方案一【JSONP】
JSONP(JSON with Padding)是JSON的一种“使用模式”,可用于解决主流浏览器的跨域数据访问的问题。
具体实现原理参考:【资料\JSONP跨域请求原理.pdf】
1.4.2方案二【CORS】
CORS是一个W3C标准,全称是"跨域资源共享"(Cross-origin Resource Sharing)。CORS需要浏览器和服务器同时支持。目前,所有浏览器都支持该功能,IE浏览器不能低于IE10。
它允许浏览器向跨源服务器,发出XMLHttpRequest请求,从而克服了AJAX只能同源使用的限制。整个CORS通信过程,都是浏览器自动完成,不需要用户参与。对于开发者来说,CORS通信与同源的AJAX通信没有差别,代码完全一样。浏览器一旦发现AJAX请求跨源,就会自动添加一些附加的头信息,有时还会多出一次附加的请求,但用户不会有感觉。因此,实现CORS通信的关键是服务器。只要服务器实现了CORS接口,就可以跨源通信。请求过程如下图:
|