一、起因:
当firefox添加metamask网络时,提示连接不成功,获取不到chainID。手机、chrome的metamask都能正常添加。
二、网络拓扑:
browser -> nginx -> geth
browser:本地浏览器,安装metamask。
nginx:远端做反向代理,访问域名 https://test.com
geth:go-ethereum服务
三、结论:
在nginx对browser request添加转发头:
proxy_set_header Host $http_host;
此request从nginx到达geth时,请求头中Host会匹配http.vhosts;Origin会匹配http.corsdomain,如果不匹配则拒绝。经抓包 该Origin为“moz-extension://”开头的字符串,需要添加到geth的--http.corsdomain ,test.com需要添加到--http.vhosts。
四、问题:
1、nginx不添加转发头是否可以不添加Origin的情况下直接成功;
2、“moz-extension://”开头的字符串是否包含指纹,如果这个字符串不固定还是可以用"*";