JS跨域解决

什么叫跨域请求?

指通过Js在不同的域之间进行数据传输或通信,比如用ajax向一个不同域请求数据,或者通过js获取页面中不同域的框架中的数据。只有协议、域名、端口有一个不同,都会被当做是不同的域。

<script>和<img>这两个标签都不会发生跨域问题,例如:JSONP解决跨越问题就是使用<script>标签来解决。

跨越解决方案CORS:

CORS是W3C的一个标准,全称是"跨域资源共享"(Cross-origin resource sharing),CORS跨域需要浏览器和服务器同时支持。请求过程如下:

浏览器首先会向发送一个预请求给服务器,访问一下服务器是否支持跨域,如果服务器支持跨域则会给浏览器回复一个预响应,表示可以开始跨域请求。接下来才是真正的跨域请求和访问。 这个请求的前提是浏览器自己首先要支持跨域请求。

现在大部分浏览器都支持跨域请求,除啦IE10以下的版本可能会出现问题。

服务器在像浏览器响应的设置一个头信息即可进行跨域访问:

response.setHeader("Access-Control-Allow-Origin","允许请求域的域名/*"); 

 Access-Control-Allow-Origin设置允许请求的域也可以设置为 * 表示该资源谁都可以用。

CORS请求默认不发送CookieHTTP认证信息

如果跨域请求需要操作cookie,还要设置一个头信息。

response.setHeader("Access-Control-Allow-Credentials", "true");

如果操作cookie,那么第一个头信息的允许请求的域就不能为* 必须为指定的域。cookie是于指定域相关的值。同时,浏览器端在接受数据的同时也要设置同意操作cookie。在请求路径后加{'withCredentials':true}表示同意操作cookie。

 

SpringMVC跨域注解:

springMVC的版本在4.2或以上版本,可以使用注解实现跨域, 我们只需要在需要跨域的方法上添加注解@CrossOrigin即可

@CrossOrigin(origins="允许请求域的域名",allowCredentials="true")  allowCredentials="true"可以省略。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值