2017-08-06 45 views
1

我使用pCloud Api從請求獲取下載鏈接。這是一個GET請求。當我請求表單瀏覽器時,我可以得到迴應。但是,當我使用jQuery我得到迴應代碼result : 7010無法使用jQuery訪問API

API請求網址:https://api.pcloud.com/getpublinkdownload?code=8eM7
從瀏覽器請求時,我得到這樣的迴應:

{ 
    "result": 0, 
    "expires": "Mon, 07 Aug 2017 00:12:50 +0000", 
    "dwltag": "aftsTab2SLkC4MDXRdp6Am", 
    "path": "\/cBZkvG2cXZNPjykVZZZChTDE7ZNVZZj5JZkZSqfRZIXZqkZmVZR7Zd7Z4ZfkZIZyVZokZbXZ3VZFkZ77ZIgCcZ14l5zXbx6p4GwdeEPdF1707nIPm7\/image%20%286%29.jpg", 
    "hosts": [ 
     "p-def2.pcloud.com", 
     "c166.pcloud.com" 
    ] 
} 

我需要這個hostspath生成下載鏈接。我只需要這 - https://c166.pcloud.com/cBZkvG2cXZNPjykVZZZChTDE7ZNVZZj5JZkZSqfRZIXZqkZmVZR7Zd7Z4ZfkZIZyVZokZbXZ3VZFkZ77ZIgCcZ14l5zXbx6p4GwdeEPdF1707nIPm7/image%20%286%29.jpg

我必須使用jQuery/JavaScript來獲得此響應。我試過PHP file_get_contents();它的工作原理,但這個鏈接將只工作形式您請求的IP地址。所以,我必須使用JQ/JS。

我的代碼:

$(document).ready(function(){ 

     function httpGet(theUrl){ 
      var xmlHttp = new XMLHttpRequest(); 
      xmlHttp.open("GET", theUrl, false); // false for synchronous request 
      xmlHttp.send(null); 
      return xmlHttp.responseText; 
     } 

     console.log(httpGet("https://api.pcloud.com/getpublinkdownload?code=8eM7")); 

}); 

感謝試圖幫助我。

+0

有沒有人幫忙? – JaTurna

+0

顯示您用於通過jquery訪問它的示例代碼。 – Mekicha

+0

好的...請稍等 – JaTurna

回答

1

看來pCloud服務器正在檢查引用者。 在大多數情況下,服務器將拒絕來自其本身的訪問。

只有從一小部分批准(登錄)頁面到達的網頁瀏覽器纔有權訪問;這有助於在一組合作網站之間共享材料https://en.wikipedia.org/wiki/HTTP_referer

在以下html中,腳本運行併成功獲取了圖像url,但瀏覽器在嘗試加載圖像時引發了錯誤。

<html> 
    <head> 
    </head> 
    <script 
    src="http://code.jquery.com/jquery-3.2.1.js" 
    integrity="sha256-DZAnKJ/6XZ9si04Hgrsxu/8s717jcIzLy3oi35EouyE=" 
    crossorigin="anonymous"></script> 
    <body> 

    <h1>Load Image from pCloud </h1> 
    <img class="loading"> 


    <script> 
    $(document).ready(function() { 

     var xhttp = new XMLHttpRequest(); 
     xhttp.onreadystatechange = function() { 
     if (this.readyState == 4 && this.status == 200) { 
      if (this.responseText){ 
      var host = JSON.parse(this.responseText).hosts[0]; 
      var path = JSON.parse(this.responseText).path; 
      } 
      $(".loading").attr("src", "https://" + host + path); 
     } 
     }; 
     xhttp.open("GET", "https://api.pcloud.com/getpublinkdownload?code=8eM7", true); 
     xhttp.send(); 
    }); 

    </script> 

    </body> 
    </html> 
+0

那麼,爲什麼他們提供的API根本不起作用呢?請幫助我這裏是pCloud api文檔:https://docs.pcloud.com – JaTurna

+1

在我的html和調試API工作正常,它得到了圖像url成功,但瀏覽器提出錯誤,當它試圖加載圖像。 –

+0

你可以請你發送你的HTML和調試API代碼? – JaTurna