浅谈跨域问题

1.跨域问题的产生

因为浏览器的同源策略所以产生了跨域。同源策略要求通过js(ajax)访问的时候,URL中的协议、域名(IP地址)、端口号都不允许发生变化。如果三者有一个变化,则不允许返回数据,认为这个请求不安全,浏览器禁止接收数据。

2.同源策略的作用

 同源政策的目的,是为了保证用户信息的安全,防止恶意的网站窃取数据。


设想这样一种情况:A网站是一家银行,用户登录以后,又去浏览其他网站。如果其他网站可以读取A网站的Cookie,会发生什么?
很显然,如果Cookie包含隐私(比如存款总额),这些信息就会泄漏。更可怕的是,Cookie往往用来保存用户的登录状态,如果用户没有退出登录,其他网站就可以冒充用户,为所欲为。因为浏览器同时还规定,提交表单不受同源政策的限制。
由此可见,"同源政策"是必需的,否则 Cookie 可以共享,互联网就毫无安全可言了。

同源策略限制以下几种行为:

  1. Cookie、LocalStorage 和 IndexDB 无法读取
  2. DOM 和 Js对象无法获得
  3. AJAX 请求不能发送

3.跨域的解决

         服务器端

            方式一:
			  //请求的Controller中加入,处理跨域请求
			  //设置可以访问的域,此方法不需要操作Cookie
			   response.setHeader("Access-Control-Allow-Origin", "http://localhost:9005"); 
		   	  //设置跨域请求允许携带Cookie
			  response.setHeader("Access-Control-Allow-Credentials", "true");
			
			方式二:
				//使用Spring提供的注解,处理跨域请求,需要Spring4.2或以上版本,allowCredentials属 
                性默认为true,可以省略不写
				@CrossOrigin(origins="http://localhost:8088",allowCredentials="true")
				@RequestMapping("/addGoodsToCartList")
				public Result addGoodsToCartList(Long itemId, Integer num) {
					...
				}

           

猜你喜欢

转载自blog.csdn.net/qq_42494445/article/details/83892596