JSON-RPC-Aufruf zum Bitcoin-Fehler, 403 Fehler beim Öffnen des Streams

Ich versuche, einen JSON-Aufruf an einen VPS-Server zu tätigen, der meine Brieftasche hostet, und es schlägt mit der folgenden Fehlermeldung fehl:

Warning:  fopen(http://user:pass@ip:port): failed to open stream: HTTP request           failed! HTTP/1.1 403 Forbidden
in C:\Users\Owner\Desktop\USBWebServer\root\php\jsonRPCClient.php on line 132

Fatal error:  Uncaught exception 'Exception' with message 'Unable to connect to     http://user:pass@ip:port' in     C:\Users\Owner\Desktop\USBWebServer\root\php\jsonRPCClient.php:140
Stack trace:
#0 C:\Users\Owner\Desktop\USBWebServer\root\php\testrpc.php(15): jsonRPCClient- >__call('getinfo', Array)
#1 C:\Users\Owner\Desktop\USBWebServer\root\php\testrpc.php(15): jsonRPCClient-   >getinfo()
#2 C:\Users\Owner\Desktop\USBWebServer\root\index.php(154): include('C:\Users\Owner\...')
#3 {main}
thrown in C:\Users\Owner\Desktop\USBWebServer\root\php\jsonRPCClient.php on line 140 

Ich habe meine JsonRPCClinet.php-Datei von hier http://jsonrpcphp.org/code.php?file=jsonRPCClient

meine bitcoin.conf-Datei ist wie folgt:

server=1 
daemon=1
listen=1
rpcuser=user
rpcpassword=pass    
rpctimeout=16
rpcallowip=0.0.0.0
rpcport=8332

Ich bin mir bewusst, dass 0.0.0.0 gefährlich ist, ich werde es ändern, sobald ich die Dinge zum Laufen bringen kann

Ich rufe json-rpc mit diesem PHP-Code auf

<?php
  require_once 'jsonRPCClient.php';

  /* Configuration variables for the JSON-RPC server */
    $rpc_host = 'ip';
    $rpc_port = '8332';
    $rpc_user = 'user';
    $rpc_pass = 'pass';

    $btc = new jsonRPCClient('http://' . $rpc_user . ':' . $rpc_pass . '@' . $rpc_host . ':' . $rpc_port);

  echo "<pre>\n";
  print_r($btc->getinfo()); echo "\n";
  echo "Received: ".$btc->getreceivedbylabel("BEkpbpYLpwacchSQFRCL7ZSWw3VwB8k7WN")."\n";
  echo "</pre>";
?> 

Zusätzlich habe ich Port 8332 auf meinem VPS geöffnet

kann jemand einen Grund sehen, warum dieser Fehler auftritt, würde ich die Hilfe sehr schätzen

Vielleicht blockiert Ihr Host ausgehende Anfragen an "nicht standardmäßige" Ports wie 8332? Versuchen Sie es mit 8080 oder 443, wenn sie nicht von einem anderen Dienst reserviert sind. Versuchen Sie es auch rpcallowip=*anstelle von 0.0.0.0.
@GeorgeKimionis Das ist es nicht - es schlägt mit einem 403-Fehler fehl, was bedeutet, dass es eine Verbindung herstellen konnte
@GeorgeKimionis Whoops, ich sollte das klarstellen. Ich meine, der erste Vorschlag ist es nicht. Der Fragesteller sollte auf jeden Fall den zweiten ausprobieren.
@NickODell wir wissen nicht wirklich, ob es mit verbunden ist bitcoind, es könnte ein Proxy oder sogar eine Firewall sein, die dies zurückgibt, 403wenn Pakete gefiltert werden.

Antworten (1)

Ich habe gerade den Code gelesen, der rpcallowip verarbeitet , und ich kann Ihnen sagen, dass rpcallowip=0.0.0.0das nicht funktionieren wird.

Wenn Sie von allen Adressen zulassen möchten, sollten Sie verwenden

rpcallowip=0.0.0.0/0

(Seltsamerweise kann ich keinen Code finden, der mit Platzhaltern umgeht. Ich werde dazu ein Problem auf Github eröffnen. Es sieht so aus, als ob entweder die Dokumentation oder der Code falsch ist.)

Bearbeiten: Es stellt sich heraus, dass die Wildcard-Unterstützung entfernt wurde.

Also habe ich 0.0.0.0/0 und * versucht, und ich bekomme genau den gleichen Fehler, ich habe auch eine zufällige IP-Adresse ausprobiert und ich habe einen anderen Fehler bekommen (nicht 403, aber es konnte immer noch keine Verbindung hergestellt werden)? hilft das irgendwie?
Huh, das ist seltsam. Versuchen Sie die Einstellung $btc->debug = truein Ihrem Programm; sehen, ob etwas Erhellendes auftaucht.
wenn ich es nach dieser Zeile platziere: $btc = new jsonRPCClient('ht... das gibt mir das: "Fatal error: Cannot access private property jsonRPCClient::$debug in C:\Users\Owner\Desktop\USBWebServer\root \php\testrpc.php in Zeile 11" Wenn ich den Debug in der Datei jsonRPCCLient.php auf true ändere, wird derselbe Fehler wie im ursprünglichen Beitrag angezeigt :(
@cfxlegion Ah, ich habe den Code falsch gelesen. Du solltest tunnew jsonRPCClient("http://...", true)
Ich verstehe das, pastebin.com/GGN9WpSK
@cfxlegion Mit 'http://...' meinte ich, dort Ihre eigentliche URL abzulegen.
Ich habe es getan, genau das hat mir der Fehler gegeben, lol, für das Pastebin habe ich nur "user", "pass" und "ip" ersetzt
Setzen Sie das Zitat vor das Komma, nicht nach dem wahren. Siehe das Beispiel, das ich oben gegeben habe.
@cfxlegion Es ist am besten, solche Informationen nicht zu posten :). Es handelt sich also definitiv um einen rpcallowip-bezogenen Fehler, und der von mir gepostete Konfigurationsschalter hätte ihn beheben sollen. Haben Sie Ihren Bitcoin-Client neu gestartet, nachdem Sie die Konfigurationseinstellung geändert haben?
Danke für den Hinweis, ich habe nicht bemerkt, dass ich es nicht entfernt hatte, :) Okay, du hast Recht, es scheint eine Art Rpcallowip-Sache zu sein, ich habe gerade die öffentliche IP meines Computers auf die Zulassungsliste gesetzt und ich habe eine Ergebnis für "getinfo" hat auch einige Fehler bekommen, aber ich finde es schlecht heraus, aber es bedeutet auch, dass weder "0.0.0.0/0" noch "0.0.0.0" oder "*" das getan haben, was sie tun sollten. hmm
sehr wichtige Sache verpasst leicht Stunden verbracht
Danke! Ich habe diese Eigenschaft bereits verwendet, aber aus irgendeinem Grund funktionierte nichts mit meiner IPv6-IP, bis ich sie darauf eingestellt habe!