403 Forbbiden是常见的网络跨域问题 ,有时候可能是IP访问密集,被浏览器禁止请求了。
这里解决 Spring 下 使用Websocket的时候 出现的问题。
场景描述
想要搭建一个类似于在线聊天室的Demo。
前端使用ws://localhost:8080/.../websocket
这里的 ... 可以有很多种
1.如果你是用Spring boot 的 Websocket endpoint 的话,这里可以写成如下: 里面的/websocket即是你的连接点
@ServerEndpoint("/websocket") ws://localhost:8080/websocket
2.如果你用是普通的jsp Spring 的写法的话。这里的... 是你的根路径 有时候也可能是你的项目名,自己尝试下
ws://localhost:8080/项目名/websocket
这样写,浏览器有时候可能会出现403 Forbbiden 的问题。网上有很多种解决方案。大同小异,都是改变配置,允许所有的访问Ip请求路径。即Deny 改为ALL
这里提供一个经常使用的方法,config配置文件信息
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.CorsRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; import static org.springframework.web.cors.CorsConfiguration.ALL; /** * @program: CORSConfig * @Date: 2019/2/15 17:56 * @Author: windC~ * @Description: 跨域配置 */ @Configuration public class CORSConfig { @Bean public WebMvcConfigurer corsConfigurer() { return new WebMvcConfigurerAdapter() { @Override public void addCorsMappings(CorsRegistry registry) { //注册一个全路径映射 registry.addMapping("/**") .allowedOrigins(ALL) .allowedMethods(ALL) .allowedHeaders(ALL) .allowCredentials(true); } }; } }
这样Spring 在启动的时候,会扫描到这个工具类,并把配置设置为ALL