栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何在Spring Boot中处理HTTP OPTIONS请求?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何在Spring Boot中处理HTTP OPTIONS请求?

选项1:Spring Boot属性(仅适用于Spring Boot 1.3.0+)
从Spring Boot 1.3.0开始,可以使用以下属性配置此行为:

spring.mvc.dispatch-options-request=true

选项2:自定义

DispatcherServlet

DispatcherServlet
在Spring Boot中由定义
DispatcherServletAutoConfiguration
。你可以
DispatcherServlet
在配置类中的某个位置创建自己的bean,而不是在自动配置中使用它:

@Bean(name = DispatcherServletAutoConfiguration.DEFAULT_DISPATCHER_SERVLET_BEAN_NAME)public DispatcherServlet dispatcherServlet() {    DispatcherServlet dispatcherServlet = new DispatcherServlet();    dispatcherServlet.setDispatchOptionsRequest(true);    return dispatcherServlet;}

但是请注意,定义你的

DispatcherServletbean
将禁用自动配置,因此你应该手动定义在
autoconfiguration
类中声明的其他bean,即
ServletRegistrationBeanfor DispatcherServlet

选项3:

BeanPostProcessor

你可以创建

BeanPostProcessor
将bean初始化之前将
dispatchOptionsRequest
属性设置为的实现true。Yoy可以将其放在你的配置类中:

@Beanpublic DispatcherServletBeanPostProcessor dispatcherServletBeanPostProcessor() {    return new DispatcherServletBeanPostProcessor();}public static class DispatcherServletBeanPostProcessor implements BeanPostProcessor {    @Override    public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {        if (bean instanceof DispatcherServlet) { ((DispatcherServlet) bean).setDispatchOptionsRequest(true);        }        return bean;    }    @Override    public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {        return bean;    }}

选项4:

SpringBootServletInitializer

如果你有

SpringBootServletInitializer
应用程序,则可以执行以下操作来启用OPTIONS调度:

public class ServletInitializer extends SpringBootServletInitializer {    @Override    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {        return application.sources(Application.class);    }    @Override    public void onStartup(ServletContext servletContext) throws ServletException {        super.onStartup(servletContext);        servletContext.getServletRegistration(DispatcherServletAutoConfiguration.DEFAULT_DISPATCHER_SERVLET_BEAN_NAME)     .setInitParameter("dispatchOptionsRequest", "true");    }}

但是,这仅在将应用程序作为WAR部署到Servlet容器中时才有效,因为

SpringBootServletInitializer
使用
main
方法运行Spring Boot应用程序时不会执行代码。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/390565.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号