2017-02-12 77 views
0

我在这个岗位执行代码:保持信息

Autocomplete with ajax call(Json) in laravel, no response

它使用laravel Ajax调用(JSON)。一切运作良好。但是,路由使用“get”,查询结果可以使用URL查看。我认为这是一个安全和隐私问题。

当自动完成不直接调用信息时,保持信息不被查看的最佳方式是什么?

+0

但是为什么?每个自动完成请求都可以通过'curl'来重现。 –

+0

shukshin.ivan你能详细说明吗? –

+0

您还没有回答。为什么?从什么样的要求保护,简单得到? –

回答

1

您可以通过验证设置参数的最小长度。将其放入您的控制器并限制js代码minLength: 3中的最小长度。

use Validator; // at the top of controller 

public function search(Request $request) { 
    $v = Validator::make($request->all(), [ 
     'q' => 'required|min:3', 
    ]); 

    if ($v->fails()) { 
     return []; 
    } 

    // now you are sure that q has minimum 3 chars 
    // search and output 
} 
0

无法识别它是从自动完成js还是从get请求中调用。

但是,您可以使用throttle middleware来防止抓取自动填充数据。像这样使用这个中间件:'middleware' => 'throttle:60,1'。这限制了每分钟60个请求的请求,然后禁止访问1分钟。请注意,api中间件组在Laravel 5.2中默认启用throttle:60,1