Json-Rpc

使用 axios 從 javascript 呼叫 JSON RPC

  • January 10, 2019

我想從反應組件中通過 JSON RPC 呼叫 geth 方法。我試過這個,但我總是得到錯誤:405(不允許的方法)

這是我的程式碼:

try {
     const response = await axios.post('http://localhost:8501', {
       jsonrpc: '2.0',
       id: + new Date(),
       method: 'eth_accounts',
       params: {
       },
     }, {
       headers: {
         'Content-Type': 'application/json',
         'Access-Control-Allow-Origin': '*'
       },
     })

     console.log(response.data.result.address)
     console.log(response.data.result.publicKey)
     console.log(response.data.result.wif)
     console.log(response.data.result)
   } catch(error) {
     console.error(error)
   }

請求必須是 POST 還是 GET?

我的 geth 實例使用以下參數執行:

geth --datadir node1/ --syncmode 'full' --port 30311 --rpc --rpcaddr 'localhost' --rpcport 8501 --rpcapi 'personal,db,eth,net,web3,txpool,miner' --bootnodes 'enode://<enode@<127.0.0.1:30310' --networkid 1515 --gasprice '1' -unlock '0x0' --mine

非常感謝您的幫助

請求必須是 POST 還是 GET?

他們應該是POST

GET不包含主體。

如果從瀏覽器訪問 RPC,則需要使用適當的域集啟用 CORS。參考

JSON RPC 也可以使用 admin.startRPC(addr, port)命令從 geth 控制台啟動。

你應該表示 --rpccorsdomain "THE CORS DOMAINS GOES HERE".

從客戶端傳遞不會在伺服器上Access-Control-Allow-Origin啟用CORS

引用自:https://ethereum.stackexchange.com/questions/65327