Spring Boot:处理跨域请求(cors、jsonp、websocket) 【未完】
发布日期:2021-06-30 17:03:53
浏览次数:2
分类:技术文章
本文共 2908 字,大约阅读时间需要 9 分钟。
# cors
“跨域资源共享”(Cross-origin resource sharing)
// from https://blog.csdn.net/c5113620/article/details/79132968@Configurationpublic class CorsConfiger extends WebMvcConfigurer{ @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**") .allowedOrigins("*") .allowCredentials(true) .allowedMethods("GET", "POST", "DELETE", "PUT") .maxAge(3600); }// 当有其他拦截器时,需要加上(这种情况,上面配置也可不要) private CorsConfiguration corsConfig() { CorsConfiguration corsConfiguration = new CorsConfiguration(); /* * 请求常用的三种配置,*代表允许所有,当然你也可以自定义属性(比如header只能带什么,只能是post方式等等) */ // 允许访问的客户端域名 corsConfiguration.addAllowedOrigin("*"); // 允许任何请求头 可选: "x-requested-with,X-Nideshop-Token,X-URL-PATH" corsConfiguration.addAllowedHeader("*"); // 允许任何方法 可选: "POST, GET, OPTIONS, DELETE" corsConfiguration.addAllowedMethod("*"); // 允许请求带有验证信息 corsConfiguration.setAllowCredentials(true); // maxAge(3600)表明在3600秒内,不需要再发送预检验请求,可以缓存该结果 corsConfiguration.setMaxAge(3600L); return corsConfiguration; } @Bean public CorsFilter corsFilter() { UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); // 拦截本域名下的所有请求 source.registerCorsConfiguration("/**", corsConfig()); // 设置头配置信息 return new CorsFilter(source); }
# jsonp
MappingJackson2HttpMessageConverter
功能增强
实现服务端 jsonp 响应
(如果前端请求包含callback=aaa
参数,则结果用 aaa(...)
包裹返回) package cn.test.config;import java.io.IOException;import javax.servlet.http.HttpServletRequest;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;import org.springframework.util.StringUtils;import org.springframework.web.context.request.RequestContextHolder;import org.springframework.web.context.request.ServletRequestAttributes;import com.fasterxml.jackson.core.JsonGenerator;@Configurationpublic class JsonpConfig { @Bean public MappingJackson2HttpMessageConverter getMappingJackson2HttpMessageConverter() { return new MappingJackson2HttpMessageConverter() { // 做jsonp的支持的标识,在请求参数中加该参数 private final static String CALLBACK = "callback"; // 获取callback参数 private String parseCallbackParam() { HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder .currentRequestAttributes()).getRequest(); return request.getParameter(CALLBACK); } @Override protected void writePrefix(JsonGenerator generator, Object object) throws IOException { String callback = parseCallbackParam(); if (!StringUtils.isEmpty(callback)) generator.writeRaw(callback + "("); } @Override protected void writeSuffix(JsonGenerator generator, Object object) throws IOException { String callback = parseCallbackParam(); if (!StringUtils.isEmpty(callback)) generator.writeRaw(")"); } }; }}
# websocket
转载地址:https://lawsssscat.blog.csdn.net/article/details/104740899 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
网站不错 人气很旺了 加油
[***.192.178.218]2024年04月11日 06时52分46秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Win10 Docker
2019-04-30
Python绘制动画并保存为gif/mp4 (matplotlib)
2019-04-30
PRM概率路线图
2019-04-30
ROS(六)——订阅者Subscriber的编程实现(C++ & Python)
2019-04-30
ROS(七)——话题消息的定义与使用
2019-04-30
yolov3入门实战
2019-04-30
B树 & B+树
2019-04-30
Node-Red(一)——简介与安装
2019-04-30
representation learning 表示学习/表征学习
2019-04-30
Haar特征
2019-04-30
Python 之 histogram直方图
2019-04-30
Python 之 Scatter散点图
2019-04-30
Python实现决策树 Desision Tree & 可视化
2019-04-30
决策树 Decision tree
2019-04-30
nominal和ordinal & 数据处理中四种基本数据类型
2019-04-30
Python 实现 Cross-validation
2019-04-30
Grid SearchCV(网格搜索)& Python实现
2019-04-30