Я пытаюсь настроить HTTP-аутентификацию для моего частного узла geth на моем сервере, используя nginx в качестве обратного прокси-сервера. Я следовал этой инструкции: https://ethereum.stackexchange.com/questions/30357/restricted-access-authentication-for-a-remote-geth-node
Я протестировал настройку с curl
, и пока она работает нормально:
curl
-X POST
--header "Content-Type: application/json"
--data '{"jsonrpc":"2.0","method":"eth_accounts","params":[],"id":1}'
https://<user>:<pw>@<domain>
Результат: {"jsonrpc":"2.0","id":1,"result":[<addresses>]}
Открытие домена в моем браузере также работает нормально, я вижу запрос аутентификации, и после ввода учетных данных ошибки нет.
Мой узел выглядит так:
docker run -d ethereum/client-go:stable
--datadir "/root"
--port 30001
--nat "any"
--nodiscover
--rpc
--rpcaddr "0.0.0.0"
--rpcport 8545
--rpcapi "eth,net,web3,rpc"
--rpccorsdomain "*"
--rpcvhosts "*"
Задача
К сожалению, я не могу подключиться к своему узлу с web3
:
web3 = new Web3(new Web3.providers.HttpProvider("https://<user>:<pw>@<domain>"));
console.log(web3.eth.coinbase);
Результат в браузере:
Error: CONNECTION ERROR: Couldn't connect to node https://<user>:<pw>@<domain>.
// this error I just get in Chrome, not in Firefox. But if I ask with `curl -I` I can see `Access-Control-Allow-Origin` is set.
web3.min.js:1 Access to XMLHttpRequest at 'https://<user>:<pw>@<domain>' from origin 'https://localhost' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.