2017-08-03 226 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响应并将响应回送给客户端。