专栏首页关忆北.SpringBoot学习五:错误处理、跨域支持

SpringBoot学习五:错误处理、跨域支持

1.SpringBoot错误产生

Spring Boot默认提供一个/error映射用来以合适的方式处理所有的错误,并将它注册为servlet容器中全局的错误页面。当出现一个错误信息时,会产生一个具有详细错误、HTTP状态,异常信息的JSON相应。具体到页面上,会产生一个错误视图。

出现该页面是因为代码中出现了运行时异常,如果代码中指定/error 路径,实现ErrorController,并注册一个该类型的bean定义,或简单地添加一个ErrorAttributes类型的bean以使用现存的机制,只是替换显示的内容则该页面会被替换成指定页面。 Spring Boot 本身在处理异常时,也是当所有条件都不满足时,才会去找 /error 路径。

动态异常页面 动态异常页面可以使用jsp、thymeleaf,动态页面可以直接展示异常信息。 如果使用thymeleaf,可以在resource/templates/error下定义一个4xxhtml、5xx.html用于展示异常信息。

2.SpringBoot解决跨域问题

同源策略

同源是指协议、域名以及端口要相同。 在前后端分离开发过程中,肯定会出现跨域问题,传统的JSONP可以使用GET方式请求,而CORS跨域是避开浏览器的同源策略。

从4.2版本开始,Spring MVC对CORS提供开箱即用的支持。不用添加任何特殊配置,只需要在Spring Boot应用的controller方法上注解@CrossOrigin

//在Controller上配置跨域
@CrossOrigin(origins = "localhost:8081")
@RestController
@RequestMapping("/account")
public class AccountController {

//在方法上配置跨域
	@CrossOrigin
	@RequestMapping("/{id}")
	public Account retrieve(@PathVariable Long id) {
		// ...
	}

	@RequestMapping(method = RequestMethod.DELETE, path = "/{id}")
	public void remove(@PathVariable Long id) {
		// ...
	}
}

@CrossOrigin注解:配置某一个方法接受某一个域的请求。 局限性:该注解仅仅可以实现某个类、某个方法层面上的跨域请求。

全局配置

@Configuration
@EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter {

	@Override
	public void addCorsMappings(CorsRegistry registry) {
		registry.addMapping("/api/**")
			.allowedOrigins("http://domain2.com")
			.allowedMethods("PUT", "DELETE")
			.allowedHeaders("header1", "header2", "header3")
			.exposedHeaders("header1", "header2")
			.allowCredentials(false).maxAge(3600);
	}
}

存在的问题:容易被csrf攻击 在SpringSecurity中配置防止csrf攻击,访问携带token。

本文参与 腾讯云自媒体分享计划 ,欢迎热爱写作的你一起参与!
本文分享自作者个人站点/博客:https://blog.csdn.net/weixin_42313773复制
如有侵权,请联系 cloudcommunity@tencent.com 删除。
登录 后参与评论
0 条评论

相关文章

  • springboot项目支持cookie跨域的过滤器配置

    一天不写程序难受
  • SpringBoot2.2.x版本添加CORS跨域访问支持

    看项目代码看到一个CORS跨域访问配置类,特此了解下什么是CORS跨域,以及Springboot 2.2.x版如何支持CORS跨域请求!!!

    海加尔金鹰
  • 第二十五章:SpringBoot添加支持CORS跨域访问

    恒宇少年
  • SpringBoot学习笔记(六)——分页、跨域、上传、定制banner、Lombok

     pagehelper 是一个强大实用的 MyBatis 分页插件,可以帮助我们快速的实现MyBatis分页功能,而且pagehelper有个优点是,分页和Ma...

    张果
  • Spring Boot使用CORS解决跨域问题

    Web开发经常会遇到跨域问题,解决方案有:jsonp,iframe,CORS等等。 CORS 与 JSONP 相比: 1、 JSONP 只能实现 GET 请...

    itlemon
  • 2021 最新版 Spring Boot 速记教程

    结束了前面的《Spring 源码深度学习》,八月给自己放松了一下,看了几本小说和电视剧,还有写一个工作中用到的小工具,周报数据渲染的前端界面(前端是真的难)。

    好好学java
  • Springboot+JWT+Vue实现登录功能

    最近在写一个Springboot+Vue的前后端分离项目,并且刚学了JWT的功能和原理,正好拿来练练手,在开发过程中也遇到了很多坑点,主要是对vue和sprin...

    CodeGoat24
  • SpringBoot 配置类整理 (长期保持更新)

    当我们想要返回 json 格式数据的时候,难免会出现 null 值得情况,因此加入如下配置即可解决问题,使用默认的 jackson 解决问题。

    Gorit
  • SpringCloud Alibaba学习笔记 ——(五、新一代服务网关 Gateway)

    传统方式我们可以使用 过滤器拦截用户会话信息,这个过程所有的服务都必须写入该验证会话登录的代码。

    Gorit
  • Spring Boot 2.x (三): 跨域处理方案之 Cor

    URI 文法由 URI 协议名(例如 “http”,“ftp”,“mailto” 或 “file”),一个冒号,和协议对应的内容所构成。特定的协议定义了协议内容...

    阿宝哥
  • SpringBoot应用跨域访问解决方案

    说到跨域访问,必须先解释一个名词:同源策略。所谓同源策略就是在浏览器端出于安全考量,向服务端发起请求必须满足:协议相同、Host(ip)相同、端口相同的条件,否...

    字母哥博客
  • SpringBoot系列(七) 分分钟学会SpringBoot多种跨域解决方式​

     跨域是指不同域名之间的相互访问,这是由浏览器的同源策略决定的,是浏览器对JavaScript施加的安全措施,防止恶意文件破坏。

    全栈学习笔记
  • 九、Spring Boot 优雅的实现CORS跨域

    我们的springboot 架手架已经包含了mysql,redis,定时任务,邮件服务,短信服务,文件上传下载,以及docker-compose 构建镜像等等。

    程序员爱酸奶
  • Java岗大厂面试百日冲刺 - 日积月累,每日三题【Day9】 —— SpringBoot1

      本栏目Java开发岗高频面试题主要出自以下各技术栈:Java基础知识、集合容器、并发编程、JVM、Spring全家桶、MyBatis等ORMapping框架...

    陈哈哈
  • Springboot处理CORS跨域请求的三种方法

    浏览器出于安全的考虑,使用 XMLHttpRequest对象发起 HTTP请求时必须遵守同源策略,否则就是跨域的HTTP请求,默认情况下是被禁止的。换句话说,浏...

    陈哈哈
  • 前后端分离项目,如何优雅实现文件存储!

    学习本文需要一些MinIO的基础知识,还不了解的小伙伴可以参考下:Github标星19K+Star,10分钟自建对象存储服务!

    macrozheng
  • 目录:SpringBoot 核心技术

    恒宇少年
  • SpringBoot教程(七) | SpringBoot解决跨域问题

    上篇文章我们介绍了SpringBoot的拦截器的写法,其中有一个比较重要的步骤,就是把我们写好的拦截器注册到Spring的一个配置类中,这个类是实现了WebMv...

    一缕82年的清风
  • Django之跨域请求

    人生不如戏

扫码关注腾讯云开发者

领取腾讯云代金券