关于解决Springboot跨域请求的方法
2024-08-27 20:13:17
前言
最近在项目中,由于前后分离,前台项目和后台项目部署的不在一台服务器,就产生了跨域的问题,特此记录下
正文
正常情况下,如果提示:
就可以判断是没有解决跨域的问题了。
在SSM中,我曾经这样解决过:
在springmvc的配置文件中添加如下代码:
<mvc:cors>
<mvc:mapping path="/**"
allowed-origins="*"
allowed-methods="POST, GET, OPTIONS, DELETE, PUT"
allowed-headers="Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With"
allow-credentials="true" />
</mvc:cors>
在springboot中,可以如下实现功能:
创建一个配置类,继承 WebMvcConfigurerAdapter,实现跨域映射即可
@Configuration
public class WebAppConfig extends WebMvcConfigurerAdapter {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**");
}
}
到此已经可以解决跨域问题了!
需要注意的是
在springboot中,如果想要更加详细的控制跨域的请求的话有也可以对上面的方法进行细化控制,如下:
@Configuration
public class WebAppConfig extends WebMvcConfigurerAdapter {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**") //可以跨域访问的路径
.allowedOrigins("http://192.168.1.97") //允许访问的ip
.allowedMethods("GET", "POST") //允许的方法
.allowCredentials(false).maxAge(3600); //用户证书验证,最大过期时间
}
}
当然,如果你需要更加详细的控制跨域问题,那么可以在每个controller上进行设置并控制跨域(需要特别注意的是:必须指定方法,也就是methods ={RequestMethod.POST,RequestMethod.GET})
@Api(value = "user", tags = "用户管理")
@RestController("managerUser")
@RequestMapping(value = "user")
@CrossOrigin(origins = "http://192.168.1.97:8080", maxAge = 3600,methods = {RequestMethod.POST,RequestMethod.GET})
public class UserController {}
如果你需要更加详细的跨域控制,可以在方法上进行设置
@RequestMapping(value = "AuditedUnitManager",method = RequestMethod.POST)
@CrossOrigin(origins = "http://192.168.1.97:8080", maxAge = 3600)
public Map<String, Object> managerLogin() {}
2018-07-30更新:
目前项目跨域问题已经解决,但是前后分离的项目会导致一种情况:跨域会引起项目session的丢失,目前正在解决这个问题。晚点更新解决方案。
最新文章
- monkey之monkey命令详解
- 在手机网页上模拟 js 控制台
- 跟我从零基础学习Unity3D开发--资源打包篇(AssetBundle)
- php5.6+apache2.4环境配置
- Android Bootloader LittleKernel的两篇文章 【转】
- JPush API client library for C Sharp(极光推送API)
- 【转】IOS屏幕旋转与View的transform属性之间的关系,比较底层
- 被忽视但很实用的那部分SQL
- C# 之 Math取整
- JWS-webservice 与Axis2-webservice的高速实现
- 各浏览器对 window.open() 的窗口特征 sFeatures 参数支持程度存在差异
- C# 操作Word目录——生成、删除目录
- Python爬虫基础之BeautifulSoup
- 如何在MAC上运行exe程序
- jmeter 压力测试(二) 获取不同格式的当前时间
- adb command not found / abd&#39; 不是内部或外部命令,也不是可运行的程序 或批处理文件。最简易修改
- java中如何不自己写排序方法完成排序
- 『CUDA C编程权威指南』第二章编程题选做
- 【转载】CentOS中crontab定时计划任务的使用
- 虚函数指针sizeof不为sizeof(void*)