Web3js

無法通過 curl 連接到 infura.io 上的 ipfs 外部節點

  • February 1, 2022

我試圖通過 php 將數據儲存到 ipfs,我使用 curl 與 api 通信,它可以在我的本地節點上找到,但我想使用來自 infura.io 的外部節點

但由於某種原因,ipfs.infura.io 拒絕我通過 php 進行的連接,即使是一個簡單的命令,比如……我已經在我的本地主機以及幾台伺服器上嘗試過

這是一個簡單的端點,您可以在瀏覽器中打開它並獲取輸出

https://ipfs.infura.io:5001/api/v0/pin/add?arg=QmeGAVddnBSnKc1DLE7DLV9uuTqo5F7QbaveTjr45JUdQn

但是當我嘗試通過 php 打開它時,我得到了

無法連接到 ipfs.infura。io 埠 5001:連接被拒絕

或使用其他方法時,例如 file_get_contents

file_get_contents(ipfs.infura.io:5001/api/v0/pin/add?arg=QmeGAVddnBSnKc1DLE7DLV9uuTqo5F7QbaveTjr45JUdQn):無法打開流:連接被拒絕

我已經在本地主機和多個伺服器上嘗試過,即使通過 ssh 命令行我也得到了相同的結果 在此處輸入圖像描述

在此處輸入圖像描述

知道為什麼會這樣嗎?

這是我的程式碼的簡化版本 n

   $curl = curl_init();
   curl_setopt($curl, CURLOPT_URL,"https://ipfs.infura.io:5001/api/v0/pin/add?arg=QmeGAVddnBSnKc1DLE7DLV9uuTqo5F7QbaveTjr45JUdQn");
   curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
   curl_setopt($curl, CURLOPT_FAILONERROR, true);
   $res = curl_exec($curl);
   if (curl_errno($curl)) {
       $error_msg = curl_error($curl);
       echo ('error ...');
       echo ($error_msg);
      exit();
   }

   curl_close($curl);
   echo($res);

你的程式碼對我來說很好。我也可以用 curl 得到正確的響應。我認為您應該在網路基礎設施中搜尋問題的原因。這是https://stackoverflow.com/a/2333446/7581809很好的討論為什麼會發生這個問題。你說你嘗試了不同的伺服器。這些伺服器在同一個網路中嗎?這個網路中可能有防火牆,它拒絕你的數據包到 infura。從另一個網路嘗試另一個伺服器。

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