前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SpringBoot学习五:错误处理、跨域支持

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

作者头像
关忆北.
发布2020-10-15 15:54:52
6700
发布2020-10-15 15:54:52
举报
文章被收录于专栏:关忆北.关忆北.

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

代码语言:javascript
复制
//在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注解:配置某一个方法接受某一个域的请求。 局限性:该注解仅仅可以实现某个类、某个方法层面上的跨域请求。

全局配置

代码语言:javascript
复制
@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。

在这里插入图片描述
在这里插入图片描述
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-08-10 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.SpringBoot错误产生
  • 2.SpringBoot解决跨域问题
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档