Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Ajax到API而不公开密钥_Php_Ajax_Api_Curl_Secret Key - Fatal编程技术网

Php Ajax到API而不公开密钥

Php Ajax到API而不公开密钥,php,ajax,api,curl,secret-key,Php,Ajax,Api,Curl,Secret Key,我很确定我要问的答案是否定的,但也许有人能给我一个不同的想法,所以我还是要问 我正在开发一个控制面板,通过API调用从第三方Web服务获取信息。我可以使用AJAX进行调用,在浏览器上以毫秒为单位返回结果,但我将公开此服务的API密钥。即使这是一个访问受限的内部网,员工也可以四处嗅探并获取私有API密钥,例如,只需查看Safari的活动窗口。员工是值得信赖的,但我不想因为信任而拿我的发展安全冒险 我现在要做的是使用一个php调用CURL调用,但是这样做需要2到3秒钟:不是php本身,而是共享主机到

我很确定我要问的答案是否定的,但也许有人能给我一个不同的想法,所以我还是要问

我正在开发一个控制面板,通过API调用从第三方Web服务获取信息。我可以使用AJAX进行调用,在浏览器上以毫秒为单位返回结果,但我将公开此服务的API密钥。即使这是一个访问受限的内部网,员工也可以四处嗅探并获取私有API密钥,例如,只需查看Safari的活动窗口。员工是值得信赖的,但我不想因为信任而拿我的发展安全冒险

我现在要做的是使用一个php调用CURL调用,但是这样做需要2到3秒钟:不是php本身,而是共享主机到第三方服务器并返回

有没有一种方法可以让浏览器直接向API发出请求,而不公开私钥?我认为从定义上讲这是不可能的,但我正在分享这个场景,所以也许有人有更好的想法(我试图避免缓存,因为获取的信息会在第二秒发生变化)

这不是问题,我对此有一个疑问:如果我在Mac OS终端或本地Apache上通过CURL调用API,每次大约需要12秒才能得到结果,但在同一台计算机上的浏览器和连接可以在毫秒内得到结果。我不太熟悉CURL在内部的工作原理,但CURL要么是一个缓慢的机制,要么在我的Mac中工作不好


谢谢

否,当浏览器请求服务时,用户可以随时嗅探密钥。因此,使用PHP作为代理是一个很好的解决方案。

不,因为javascript代码被发送到客户机并在其上运行,所以无法不以某种方式公开API密钥。加密/混淆它将是毫无意义的,因为有知识的用户只需使用头查看器/数据包嗅探器就可以从API请求中提取明文密钥

不向用户公开密钥的唯一方法是不让用户获得密钥,这意味着代理请求