从客户端隐藏API密钥

时间:2017-08-03 14:33:32

标签: javascript php jquery ajax api

我正在尝试与Zendesk进行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

他们都分享了应该在服务器端处理的问题。但是,我找不到任何有关如何执行此操作的明确教程。有人能给我一个关于如何开始的想法吗?被困在这一天超过一个星期。

1 个答案:

答案 0 :(得分:2)

正如您所提到的,您唯一能做的就是将PHP文件作为中间件联系。所以你请求一个PHP文件并发送一个cURL请求。

客户端应用程序中的问题是,客户端可以读取所有内容。因此,您可以使用PHP进行一些中间步骤。

最好的是您可以等待cURL响应并将响应发送回客户端。