跨域问题解决

朴灿烈づ我的快乐病毒、 2022-04-10 01:17 567阅读 0赞

跨域问题解决

前段时间有同事在开发中遇到了跨域问题,针对这个问题这边做一些相关说明

跨域问题的出现

  • 主要是因为前后端域名不同造成的,一般情况下可以通过nginx的服务转发处理掉这个问题(使得前后端处于同一域名下),但是当遇到不使用nginx的小型单体前后端分离的项目时,就会出现跨域问题。
  • 还要了解到这么一个情况:实际上浏览器在向后端发送请求时,除一般简单请求(比如不带任何参数的GET请求)外会发送两次请求。简单请求浏览只发送一次请求,复杂请求浏览器会先发送一个OPTION请求,OPTION请求实际上就是浏览器在询问后端是否通过浏览器的跨域请求,如果请求通过,则浏览器会发送第二个真正的请求,如果OPTION请求失败,那么随后的请求就会报跨域问题

解决方法

遇到这种问题也很好解决的,已经知道了它产生的原因,我们只需要根据这个原理对他进行处理即可。也就是说我们只需要将OPTION通过即可,允许浏览器跨域,问题就迎刃而解了。
具体操作就是添加一个拦截器,在拦截器里拦截OPTION请求,并允许该请求跨域,跨域问题即可解决。
其实在这个地方还可以有一个扩展:比如我们可以拦截所有请求,并且可以在这判断这些请求是否是我们允许的前端发送过来的请求。不是的话,可以直接拒绝访问。

发表评论

表情:
评论列表 (有 0 条评论,567人围观)

还没有评论,来说两句吧...

相关阅读

    相关 解决问题

     问题产生:前端页面地址跟接口地址域名不一样。  问题解决:前端页面请求的请口地址域名,保持跟页面地址的域名一致,然后在前端项目所在的nginx中进行请求的转发,将请求转发到

    相关 解决问题

    解决跨域问题 这个问题面试经常问,可是每次看完只会就不太记得,因此在这里记录一下,方便以后工(跳)作(槽)查看。 -------------------- 什么是跨域

    相关 解决问题

    背景:外机访问本机端口的时候会产生跨域的问题,这个时候就需要解决跨域。 代码编写: import org.springframework.context.annot