JSON-RPCの動きを検証するために、jqueryなどを使って適当なJavascriptでテストページを作ったのですが、クロスオリジンの問題でうまく動きません。
ポートが異なるだけで別オリジン扱いのようなので、どうしようもないのかな?と思っていたところ、動きをテストするだけならもっと簡単な方法がありました。
cURLという、様々なプロトコルでデータを送受信できるユーティリティを使います。
試しにインストールして使ってみましょう。
$ sudo apt-get install curl $ curl http://monacoin.org/ja/
これでだーっと標準出力にサイトのソースが表示されます。
では実際にmonacoindを操作してみましょう。
monacoindとJSON-RPCを使って会話をするために必要なIDとPWは、初回起動時にmonacoin.confに設定しているはずです。
そのIDとPWを使ってデフォルトのrpcportにアクセスすると、ちゃんと返事があります。
$ curl --user 'rpcuserid:rpcpassword' --data-binary '{"jsonrpc":"1.0","id":"curltext","method":"getinfo","params":[]}' -H 'content-type:text/plain;' http://127.0.0.1:9402 {"result":{"version":80700,"protocolversion":70002,"walletversion":60000,"balance":0.01800000,"blocks":208195,"timeoffset":44,"connections":8,"proxy":"","difficulty":1105.55691097,"testnet":false,"keypoololdest":1405931648,"keypoolsize":104,"paytxfee":0.00000000,"mininput":0.00001000,"errors":""},"error":null,"id":"curltext"}
monacoin.confの他の設定項目についても見てみます。
いくつかある設定項目の内、重要なのはrpcallowipとrpcportです。
server、listenについては設定しなくても返事があるので、qtを使う時に必要な設定なのか、デフォルトが有効な設定のようです。
まずrpcportを設定すると、待ち受けるポートをデフォルトの9402から変更出来ます。
rpcport=9359
monacoin.confで上記のように設定すると、以下のように9359ポートで動いているのが分かります。
$ curl --user 'rpcuserid:rpcpassword' --data-binary '{"jsonrpc":"1.0","id":"curltext","method":"getinfo","params":[]}' -H 'content-type:text/plain;' http://127.0.0.1:9359 {"result":{"version":80700,"protocolversion":70002,"walletversion":60000,"balance":0.01800000,"blocks":208196,"timeoffset":44,"connections":6,"proxy":"","difficulty":938.68052376,"testnet":false,"keypoololdest":1405931648,"keypoolsize":104,"paytxfee":0.00000000,"mininput":0.00001000,"errors":""},"error":null,"id":"curltext"}
次に、rpcallowipを設定すると、別のIPからでもアクセス出来るようになります。
以下のコメントアウトした1行目のように設定にすると、ネットワークごとアクセス許可が出来ます。
が、基本的にはlocalhostからのみの接続とすべきでしょう。
そうであれば、デフォルトでlocalhost限定なので、わざわざ設定しなくても良さそうですが、設定しろとよく書いてあるので、念のため。
#rpcallowip=192.168.0.* rpcallowip=127.0.0.1
ちなみにrpcpasswordを間違えると、以下のようにHTMLでレスポンスがあります。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd"> <HTML> <HEAD> <TITLE>Error</TITLE> <META HTTP-EQUIV='Content-Type' CONTENT='text/html; charset=ISO-8859-1'> </HEAD> <BODY><H1>401 Unauthorized.</H1></BODY> </HTML>
0 コメント:
コメントを投稿