我是Laravel的新手,很抱歉我的代码......
我正在尝试将jquery库与我的Laravel项目集成。
控制器
public function index()
{
return view('products');
}
public function data()
{
$products = Product::all();
return $products->toJson();
}
路线
Route::get('/products', ['as' => 'products', 'uses' => 'ProductController@index']);
Route::get('/products/data', ['as' => 'products.data', 'uses' => 'ProductController@data']);
查看
<script>
var CSRF_TOKEN = $('meta[name="csrf-token"]').attr('content');
$.ajax({
url: '/products/data/',
type: 'GET',
data: {_token: CSRF_TOKEN},
dataType: 'JSON',
success: function (data) {
console.log(data);
}
});
</script>
一切正常,但如果我去/ products / data /我可以在浏览器上看到json。这不应该发生!
我做得对吗?这是从数据库中获取json数据到视图的正确方法吗?
谢谢。
答案 0 :(得分:2)
只要此信息对攻击者无用,您就无需担心。如果您想对网站造成一些伤害,那么产品信息很可能不是您想要的。
确保有关用户的信息不会通过GET Request
进行转移。因为这样,想要对您的网站造成伤害的人可以访问他们想要实现的信息。确保此数据通过POST Request
传输,以便他们无法轻松访问这些信息。另外,请确保散列的信息只能由用户自己或其他可靠来源提供。
在这种情况下,我一眼就看不到你的方法有什么问题。
有关此主题的更多信息,请访问:HTTP Methods: GET vs. POST
答案 1 :(得分:1)
您可以使用请求wantsJson
或ajax
方法
<强>控制器强>
use Illuminate\Http\Request;
public function data(Request $request)
{
$products = Product::all();
if ($request->wantsJson()) {
return $products;
}
return abort(404);
}