Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Json 人人都可以访问Laravel5.3中的Ajax_Json_Ajax_Laravel - Fatal编程技术网

Json 人人都可以访问Laravel5.3中的Ajax

Json 人人都可以访问Laravel5.3中的Ajax,json,ajax,laravel,Json,Ajax,Laravel,我是新来的拉威尔,很抱歉我的代码 我正在尝试将jquery库与我的Laravel项目集成 控制器 public function index() { return view('products'); } public function data() { $products = Product::all(); return $products->toJson(); } use Illuminate\Http\Request; public functio

我是新来的拉威尔,很抱歉我的代码

我正在尝试将jquery库与我的Laravel项目集成

控制器

public function index()
{

    return view('products');

}

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

    return $products->toJson();

}
use Illuminate\Http\Request;

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

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

    return abort(404);
}
路线

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>

var CSRF_TOKEN=$('meta[name=“CSRF TOKEN”]”)。attr('content');
$.ajax({
url:“/products/data/”,
键入:“GET”,
数据:{u令牌:CSRF\u令牌},
数据类型:“JSON”,
成功:功能(数据){
控制台日志(数据);
}
});
一切都正常,但如果我转到/products/data/我可以在浏览器上看到json。这不应该发生

我做得对吗?这是将json数据从数据库获取到视图中的正确方法吗


谢谢。

只要此信息对攻击者没有用处,您就无需担心。如果你想对网站造成伤害,产品信息很可能不是你想要的东西

确保有关用户的信息不会通过
GET请求
传输。因为通过这种方式,那些想对你的网站造成伤害的人可以获得他们想要获得的信息。确保这些数据通过
POST请求
传输,这样他们就不能很容易地访问信息。还要确保您散列的信息应该只在用户自己或其他可信来源手中

在这种情况下,我一眼就看不出你的方法有什么问题


有关此主题的更多信息可在此处找到:

只要此信息对攻击者没有用处,您就无需担心。如果你想对网站造成伤害,产品信息很可能不是你想要的东西

确保有关用户的信息不会通过
GET请求
传输。因为通过这种方式,那些想对你的网站造成伤害的人可以获得他们想要获得的信息。确保这些数据通过
POST请求
传输,这样他们就不能很容易地访问信息。还要确保您散列的信息应该只在用户自己或其他可信来源手中

在这种情况下,我一眼就看不出你的方法有什么问题


关于这个主题的更多信息可以在这里找到:

您可以使用Request
wantsJson
ajax
方法

控制器

public function index()
{

    return view('products');

}

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

    return $products->toJson();

}
use Illuminate\Http\Request;

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

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

    return abort(404);
}

您可以使用Request
wantsJson
ajax
方法

控制器

public function index()
{

    return view('products');

}

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

    return $products->toJson();

}
use Illuminate\Http\Request;

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

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

    return abort(404);
}

非常感谢。使用这种方法,我会得到一个错误。“正在尝试获取非对象的属性”。知道为什么吗?谢谢。使用这种方法,我会得到一个错误。“正在尝试获取非对象的属性”。知道为什么吗?好的,谢谢你的解释。但是,难道我没有办法阻止通过浏览器访问该URL吗?@devwebapp我认为这是不可能的。例如,您只能通过登录用户访问
GET
url来显示产品。但这是可选的。您也可以请求
发布
,这样url上就没有数据,但您没有发布任何数据,所以我认为在这种情况下不需要发布。好的,谢谢您的解释。但是,难道我没有办法阻止通过浏览器访问该URL吗?@devwebapp我认为这是不可能的。例如,您只能通过登录用户访问
GET
url来显示产品。但这是可选的。您也可以请求
POST
,这样url上就没有数据了,但您没有发布任何数据,所以我认为在这种情况下不需要。