2017-02-12 89 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