关于跨域访问

最近一直在编写关于前后端段分离的项目,后端 使用的是对应的 VUE+ELEMENT 做了权限验证等等方便,

当做前后端分离的时候,全是 ajax请求,而且有个迫切需要解决的问题,就是对应的 请求 每个请求都是=跨域的。

想到之前的 解决方案,记录一下。

跨域问题是 响应出了问题 不是请求问题,请求是可以请求到的 不过是 响应出了问题,因为跨域了导致的浏览器拦截了对应的响应数据。所以要解决响应问题。

最早的时候 我记得 是采用 JSONP的 方式,把回调函数的函数名返回给前端,前端自动调用回调函数 来解决跨域的问题。这样就可以避免跨域问题。

但是这种方式已经好久没有用到过了 ,所以就不在介绍了。因为 这种方式 限制很大,只能是 get请求 

在 引入了springmvc后,在 版本是 4.2之后好像是,我不知道记得清楚不清楚了

这种的方式 是 在对应的方法上 加上相应的注解,这样就会 可以 支持跨域请求,这种的方式 适用于 

小范围的方法 ,比如 提供外部的请求 ,导致的跨域 ,本身来说很小量的 方法,因为他只能对应一部分方法或者类 不是全量的请求,具体的使用方法为:CrossOrigin注解 适用于 方法上 还有类上

下面简单说下 

 

origins  : 允许可访问的域列表

maxAge:准备响应前的缓存持续的最大时间(以秒为单位)。

使用起来没有任何的难度。 有可能是 一些情况导致跨域没失效。  

类上没有 对应的bean 注解 就是 @Controller.

对应的响应方法没有对应的 get 或者post 请求方式的 加上就可以了。

这种方式 很方便但是 假如 每个 类上 都加上 也是很不友好。

下面就是介绍 最通用的方式:

一般情况下 都是在 拦截器上配置对应的 跨域请求的问题

 

//一般加上这几句 就行了 很简单 

   response.setHeader("Access-Control-Allow-Origin", "*");  
  //理解起来就是 Access-Control-Allow-Origin  允许跨域的请求     *代表所有请求 

//代表任何的预请求都支持
  response.setHeader("Access-Control-Allow-Headers", request.getHeader("Access-Control-Allow-Headers"));  


  response.setHeader("Access-Control-Allow-Methods","PUT,POST,GET,DELETE,OPTIONS"); //这里要加上 OPTIONS 因为 跨域的时候 会 预请求一次 采用的方式 就是 OPTIONS

 

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值