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=*
,但此解决方案是一种糟糕的安全做法。
我是 运行 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=*
,但此解决方案是一种糟糕的安全做法。