java跨域问题_Java后台解决跨域问题

本文介绍了JavaScript中的跨域概念,由于同源策略的限制,不同源的请求会被浏览器拦截。在前端Vue项目中,使用Ajax请求后端SpringBoot服务时遇到了跨域问题,表现为前端能发送请求但无法获取响应数据。通过在SpringBoot后端添加@CrossOrigin注解,允许所有来源的跨域请求,解决了该问题。此外,文章还提示可以通过关注微信公众号获取更多实用技术分享。
摘要由CSDN通过智能技术生成

首先说一下什么是跨域?

JavaScript出于安全方面的考虑,不允许跨域调用其他页面的对象。那什么是跨域呢,简单地理解就是因为JavaScript同源策略的限制,a.com域名下的js无法操作b.com或是c.a.com域名下的对象。

当协议、子域名、主域名、端口号中任意一个不相同时,都算作不同域。不同域之间相互请求资源,就算作“跨域”。

例如:http://www.abc.com/index.html 请求 http://www.efg.com/service.php。

有一点必须要注意:跨域并不是请求发不出去,请求能发出去,服务端能收到请求并正常返回结果,只是结果被浏览器拦截了。之所以会跨域,是因为受到了同源策略的限制,同源策略要求源相同才能正常进行通信,即协议、域名、端口号都完全一致。

在这之前小冷自己写了个简单的前端页面(注意此页面使用vue),这里涉及的是前后端分离的操作,小冷使用vue中的ajax直接请求的后台的服务器,当然后台可以用任何语言实现数据传输(可使用java,python,node,php,c++,c#等),小冷使用的是java语言编写的后台的代码,此时就涉及到了跨域。

首先是前台数据可以传到

3021b2e4a04566143aea2ca7df808eec.png

7102ec7b5b61ba2dfaf4fc7505deef49.png

然而后台却无法相应回前台页面(这里页面会抛一个异常,说太安全,无法获取请求后响应的数据--暂时就这样理解吧嘻嘻)

246d18840c1acc753770f8e4025eb445.png

请求代码

240be81f79eceba259bc9f0bc8b376f7.png

java解决方法:

此处java使用的springboot框架,解决中使用的一个注解

@CrossOrigin(origins = "*", maxAge = 3600) //* 可以改成ip地址

加如此注解后

0136d1dbe632b024e58859f549e6d992.png

获取到响应的数据,此处注解可以配置全局,亦可以配置方法局部小冷配置为全局

d5416c1515968e43faa25a0a0db95ea6.png

此处基本跨域问题基本解决!

前端vue跨域的解决方法:

a599bade46bbf12ae7bbc7e62324957e.png

大家可以关注我的微信公众号”秦川以北“,里面还有好多实用的技术分享!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值