2016-10-11 6 views
0

でアクセス..Ajaxの私は自分のコードのためにとても残念、Laravelに新しいです誰も

私はLaravelプロジェクトにjQueryライブラリを統合しようとしています。

コントローラ

public function index() 
{ 

    return view('products'); 

} 

public function data() 
{ 
    $products = Product::all(); 

    return $products->toJson(); 

} 

ルート

Route::get('/products', ['as' => 'products', 'uses' => '[email protected]']); 
Route::get('/products/data', ['as' => 'products.data', 'uses' => '[email protected]']); 

ビュー

<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データを取得する正しい方法ですか?

ありがとうございます。

答えて

2

長い間、この情報はあなたが心配することはない攻撃者にとって有用ではありません。あなたがウェブサイトに何らかの害を及ぼしたい場合、商品情報はあなたが望むものではない可能性が高いです。

ユーザーに関する情報がGET Requestに転送されないようにしてください。このようにして、あなたのウェブサイトに害を及ぼしたい人は、達成したい情報にアクセスすることができます。このデータがPOST Requestを通過するようにして、情報に簡単にアクセスできないようにしてください。また、ユーザー自身または他の信頼できるソースの手に入るべきである情報をハッシュするようにしてください。

このような状況では、一見して自分のアプローチに間違いはありません。

このテーマについて、もう少し情報がここで見つけることができます:あなたが要求wantsJsonajaxメソッドを使用することができますHTTP Methods: GET vs. POST

+0

[OK]を説明していただきありがとうございます。しかし、ブラウザ上でそのURLへのアクセスをブロックする方法はありませんか? – devwebapp

+0

@devwebapp可能だとは思わない。たとえば、製品を表示するためにログインしたユーザーが「GET」URLにアクセスするだけです。しかしこれはオプションです。あなたはまた、 'POST'リクエストに行くことができるので、データはURLで利用できませんが、データを投稿していないので、このシナリオでは必要ではないと思います。 –

1

コントローラ

use Illuminate\Http\Request; 

public function data(Request $request) 
{ 
    $products = Product::all(); 

    if ($request->wantsJson()) { 
     return $products; 
    } 

    return abort(404); 
} 
+0

ありがとうございます。この方法ではエラーが発生します。 "非オブジェクトのプロパティを取得しようとしています"。どんな考え? – devwebapp

+0

エラーの詳細を教えていただけますか? – zorx

関連する問題