手机怎么做网站添加背景音乐,住建城乡建设网站,门户网站建设招标公告,计算机动漫制作专业Spring boot开启跨域配置
背景
跨域#xff08;Cross-Origin#xff09;是指在互联网上的一个域下的文档或脚本尝试请求另一个域下的资源时#xff0c;域名、协议或端口不同的这种情况。具体来说#xff0c;如果一个网页试图通过脚本#xff08;如JavaScript#xff09…Spring boot开启跨域配置
背景
跨域Cross-Origin是指在互联网上的一个域下的文档或脚本尝试请求另一个域下的资源时域名、协议或端口不同的这种情况。具体来说如果一个网页试图通过脚本如JavaScript从不同源的服务器上请求数据就会触发浏览器的同源策略限制导致跨域问题。 同源策略Same-origin policy是Web浏览器的一个安全功能它要求Web浏览器仅允许执行来自同一站点的脚本访问该站点的资源。这意味着如果网页A尝试访问网页B的资源且这两个网页的协议、域名或端口号中任何一个不相同浏览器就会阻止这种访问以防止恶意网站读取另一个网站的数据。
Spring boot解决跨域问题
一、controller添加注解
在controller层添加CrossOrigin就可以解决跨域问题
RestController
RequestMapping(test)
Slf4j
CrossOrigin
public class DemoController {RequestMapping(message)public String test(RequestBody Message message) {log.info({}, JSON.toJSONString(message));return test;}
}
二全局配置
添加如下全局配置就可以统一配置跨域支持
Configuration
public class MvcConfig implements WebMvcConfigurer {/*** 开启全局跨域配置* param registry*/Overridepublic void addCorsMappings(CorsRegistry registry) {registry.addMapping(/**).allowedOriginPatterns(*).allowedMethods(POST, GET, PUT, OPTIONS, DELETE).maxAge(3600).allowCredentials(true);}}三通过拦截器配置
通过如下拦截器配置也可以支持跨域
public class CorsInterceptor implements HandlerInterceptor {Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {//表示接受任意域名的请求,也可以指定域名response.setHeader(Access-Control-Allow-Origin, request.getHeader(origin));//该字段可选是个布尔值表示是否可以携带cookieresponse.setHeader(Access-Control-Allow-Credentials, true);response.setHeader(Access-Control-Allow-Methods, GET, HEAD, POST, PUT, PATCH, DELETE, OPTIONS);response.setHeader(Access-Control-Allow-Headers, *);//这里可以不加但是其他语言开发的话记得处理options请求/*** 非简单请求是对那种对服务器有特殊要求的请求* 比如请求方式是PUT或者DELETE或者Content-Type字段类型是application/json。* 都会在正式通信之前增加一次HTTP请求称之为预检。浏览器会先询问服务器当前网页所在域名是否在服务器的许可名单之中* 服务器允许之后浏览器会发出正式的XMLHttpRequest请求*/if(HttpMethod.OPTIONS.toString().equals(request.getMethod())){return true;}return true;}Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {}Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {}
}
总结
Spring boot解决跨域问题还是很方便的遇到跨域问题通过以上方式都可以实现解决