2017-08-03 224 views
0

我正在嘗試與Zendesk進行API集成。我遇到很多問題。你可以看到,我問這個問題,因此下面迄今爲止問題:從客戶端隱藏API密鑰

How to pass an access token in an ajax call

ZenDesk API ticket submission using Javascript - authorization

現在好消息 - 我有它的工作表面上。但是我的API密鑰公開地在客戶端Javascript中,並且我需要弄清楚它隱藏它。這是目前我的代碼如下所示:

$.ajax({ 
     type: 'post', 
     url: 'https://domain.zendesk.com/api/v2/tickets.json', 
     data: { 
      "ticket": { 
      "subject": "new contact from " + contactEmail, 
      "comment": { 
       "body": contactFirstName + ' ' + contactLastName + ' ' + 'says: ' + contactMessage + contactEmail 
      } 
      } 
     }, 
     beforeSend : function(xhr) { 
      xhr.setRequestHeader('Authorization', 'BEARER (my key is here)'); 
     }, 
     success: function(response) { 
      console.log(response); 
     }, 
     error : function(error) { 
      console.log(error); 
     } 
     console.log('support ticket sent'); 
     }); 

我的研究使我以下資源:

How to Hide an API Key in Client-Side Javascript

http://billpatrianakos.me/blog/2016/02/15/securing-api-keys-in-a-javascript-single-page-app/

Using JS/PHP/JS to hide API key

他們都有着setiment這應該在服務器端處理。但是,我無法找到關於如何做到這一點的任何明確的教程。有人能給我一個關於如何開始的想法嗎?一直持續了一個多星期。

+2

請勿將您的API密鑰放在客戶端附近的任何位置。在您的PHP中請求Zendesk,並讓您的AJAX調用PHP。 –

+0

將您的文章發佈到PHP腳本,然後讓PHP腳本(使用CURL)將信息通過api鍵等發送給zendesk。 –

+0

@SchalkKeun好的,讓我試試這個...我會用結果更新我的答案 – kawnah

回答

2

您可以做的唯一一件事就像您提到的那樣,您將PHP文件作爲中間件進行聯繫。所以你請求一個PHP文件併發送一個cURL請求。

客戶端應用程序的問題是,客戶端可以讀取所有內容。所以你有唯一的方法來處理PHP的一箇中間步驟。

最好的是,您可以等待cURL響應並將響應回送給客戶端。