我将密钥安全放在.env文件中,我想向付费API服务发出ajax请求。 我有一个Javascript文件(包含ajax代码),它位于public / ajax.js
中我可以通过这种方式检索,将这行代码:$key = env('SECRET_API_KEY');
放在控制器中并使用https://github.com/laracasts/PHP-Vars-To-Js-Transformer直接将其传递给javascript,但后来我被迫将@include('footer')
放入某个X中页。因此,当我查看源代码时,我会看到我的API密钥:/
我能够成功提取数据但如何防止这种情况?
我目前在Ajax代码中的网址:url:"http://johndoe?param1=abc¶m2=def&_token="+key,
。
如果我直接将其放入javascript $key = env('SECRET_API_KEY');
,我会收到错误Uncaught ReferenceError: env is not defined
检索api密钥的最佳方法是什么?
答案 0 :(得分:2)
定义JS将从该路由调用的路由,定义将处理请求并对付费服务进行API调用的控制器和函数。
Route::get('api-call', 'APIController@call');
//APIController
//use GuzzleHttp\Exception\GuzzleException;
//use GuzzleHttp\Client;
...
public function call(Request $request)
{
$params = $request->all();
$api_key = env('SECRET_API_KEY');
$url = 'url-to-paid-service?' . $params . '&key=' . $api_key;
$client = new Client();
$res = $client->get($url);
return response()->json($res->getBody());
}
在您的ajax中,拨打电话http://your-own-site/api-call