Ethereum client-go RPC 响应 403 "invalid host specified"

Ethereum client-go RPC response 403 "invalid host specified"

我是 运行 ethereum/client-go docker 带有以下标志的图像:

docker run -p 8545:8545 ethereum/client-go --rpcapi personal,db,eth,net,web3 --rpc --rpcaddr 0.0.0.0 --rpccorsdomain * --rinkeby

此图像在机器 A 上 运行,我可以在其中查询 RPC。但是当我尝试从机器 B 查询它时,我收到以下响应:

要求:

curl -X POST http://<machine_A_address>:8545 -H "Content-Type: application/json" --data '{"jsonrpc":"2÷.0","method":"eth_coinbase","params":[],"id":64}' --verbose

回复:

< HTTP/1.1 403 Forbidden
< Content-Type: text/plain; charset=utf-8
< X-Content-Type-Options: nosniff
< Date: Wed, 18 Apr 2018 14:58:44 GMT
< Content-Length: 23
< 
invalid host specified
* Connection #0 to host ... left intact

如何从机器 B 查询托管在机器 A 上的以太坊客户端?我在哪里可以找到以太坊客户端日志以便我可以对其进行调试?

添加 --rpcvhosts=* 这个标志解决了问题

由于 --rpcvhosts 已弃用,您需要指定标志 --http.vhosts=<YOUR_DOMAIN>

如果您需要一个简单的解决方法,您可以设置 --http.vhosts=*,但此解决方案是一种糟糕的安全做法。