本文模擬user註冊的情境來簡單演示,在Laravel中如何透過ajax來存取資料,以post request為例。
前端透過post把user資料送到controller中,並且透過model把資料塞進DB,最後回傳json response。
程式碼如下:
如上圖,user輸入帳密後按下Register後,發出ajax post request送往UserController,成功將user新增至user table,並且回傳http response給前端。
其中,$.ajaxSetup是為了不用每次要送ajax request都要在header加上csrf token,透過這種方式,之後的request都會自動加上去。
另外,其實meta中不一定要放上csrf token,這只是為了讓js方便可以存取token而已,事實上只要request header中有帶即可,laravel後端收到request之後會比對跟session中的csrf token是否一致。
Note:
Laravel為了防禦CSRF攻擊,要求前端每次的request都必須加上csrf token,否則會出現419 (unknown status)。
如下圖,ajax request沒有帶上csrf token的結果: