websocket 握手连接 设置响应请求头注意事项
采用 SockJS 连接websocket
var socket = new SockJS(“http://127.0.0.1:5555/webSocketServerEndpoint”);
后台服务设置websocker连接请求的响应头Access-Control-Allow-Credentials必须为true且Access-Control-Allow-Origin不能为* 才能连接成功
如果同时设置corsFilter 要注意
@Bean
public FilterRegistrationBean corsFilter() {
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
CorsConfiguration config = new CorsConfiguration();
config.setAllowCredentials(false);
ArrayList<String> allow =new ArrayList<>();
allow.add(“*”);
config.setAllowedOrigins(allow);
config.setAllowedHeaders(allow);;
config.setAllowedMethods(allow);
source.registerCorsConfiguration(“/**”, config);
FilterRegistrationBean bean = new FilterRegistrationBean(new CorsFilter(source));
bean.setOrder(Ordered.HIGHEST_PRECEDENCE);
return bean;
}
为了支持跨域,要设置Access-Control-Allow-Origin 为”*” ,同时Access-Control-Allow-Credentials 为 false (默认为fasle)
Access-Control-Allow-Origin:* 和 同时Access-Control-Allow-Credentials:true 不能同时设置
http://www.ruanyifeng.com/blog/2016/04/cors.html
(1)Access-Control-Allow-Origin
该字段是必须的。它的值要么是请求时Origin字段的值,要么是一个*,表示接受任意域名的请求
(2)Access-Control-Allow-Credentials
该字段可选。它的值是一个布尔值,表示是否允许发送Cookie。默认情况下,Cookie不包括在CORS请求之中。设为true,即表示服务器明确许可,Cookie可以包含在请求中,一起发给服务器。这个值也只能设为true,如果服务器不要浏览器发送Cookie,删除该字段即可
如果要发送Cookie,Access-Control-Allow-Origin就不能设为星号