websocket代理出现问题

来源:8-3 websocket代理如此简单

慕工程7462913

2020-11-04

代理服务器启动之后下面打印的是2003(socket测试服务器)端口,默认监听的不是自己的端口(2002)和老师演示的结果不一样

代理服务页面

socket测试服务器(2003端口)输入框里填写2003或者2002都能连接成功并且能回写发送消息

图片描述

代理服务器(2002)页面监听地址框里填写2002和2003都连接不上

图片描述

控制台打印错误提示如下图

图片描述

感觉是代理创建负载均衡代理器那里出了问题

更改之后

我把里面的CheckOrigin手动设置成true之后能用了。

var upgrader = websocket.Upgrader{
	CheckOrigin: func(r *http.Request) bool {
		return true
	},
} // use default options

是反向代理里面需要对socket有什么额外处理吗?这里是不是牵涉到跨域的问题,为什么老师演示的时候能用?和老师演示的有出入,希望老师能够解答一下。
为什么默认方法func checkSameOrigin(r *http.Request) bool不返回true呢

// checkSameOrigin returns true if the origin is not set or is equal to the request host.
func checkSameOrigin(r *http.Request) bool {
	origin := r.Header["Origin"]
	if len(origin) == 0 {
		return true
	}
	u, err := url.Parse(origin[0])
	if err != nil {
		return false
	}
	return equalASCIIFold(u.Host, r.Host)
}
写回答

1回答

牛儿吃草

2020-11-08

跨域问题,当前请求浏览器地址应该和接口地址不是一个域名。
比如一个localhost、一个127.0.0.1

0
1
慕工程7462913
嗯嗯,回头再不主动设置CheckOrigin为true试试
2020-11-08
共1条回复

(打造简历金牌项目)Vue+Go 开发企业级微服务网关项目

简历中摒弃烂大街的培训机构项目,带你开发企业级微服务网关

1316 学习 · 352 问题

查看课程