php - Failed to load resource: the server responded with a status of 403 when using ajax to send post request on production server laravel

one text

I am using ajax to send a request to a laravel controller with multiple images and other, Everything work on local environement but when I upload to the production environement, the upload fails with the error

    Failed to load resource:/property/images/add:1 the server responded with a status of 403 ()

Here is the ajax code

    $.ajaxSetup({
            headers: {'X-CSRF-TOKEN': $('input[name=_token]').val()}
        });

        $('#images').change(function () {
            event.preventDefault();
            let image_upload = new FormData();
            let TotalImages = $('#images')[0].files.length;  //Total Images
            let images = $('#images')[0];  
            let p_id = $('input[name=p_id]').val();

            for (let i = 0; i < TotalImages; i++) {
                image_upload.append('images[]', images.files[i]);
            }
            image_upload.append('TotalImages', TotalImages);
            image_upload.append('p_id', p_id);

            $.ajax({
                method: 'POST',
                url: '{{ route('image.add') }}',
                data: image_upload,
                contentType: false,
                processData: false,
                success: function (images) {
                    Swal.fire(
                    'Success!',
                    'Images uploaded successfully',
                    'success'
                    );
                    $('#images').reset();

                },
                error: function () {
                    Swal.fire(
                    'Failed!',
                    'An error occured please try again',
                    'error'
                    );
                    $('#images').reset();
                }
            });

        });

and this is the controller code

    public function store(Request $request)
{
    //check if an image has been selected
        if ($request->images) {
            $total=$request->TotalImages;
            $images = $request->images;
            foreach($images as $image) {
                $photo = new Photo;
                $photo->p_id = $request->p_id;
                $image_temp = $image;
                //echo $image_temp; die;
                if ($image_temp->isValid()) {
                    $extension = $image_temp->getClientOriginalExtension();
                    $filename = 'bks'.mt_rand(000, 9999999999) . '.' . $extension;
                    $filepath = 'uploads/property/large/' . $filename;
                    $webimagefilepath = 'uploads/property/small/' . $filename;
                    //upload the image
                    Image::make($image_temp)->resize(600, 600)->save($filepath);
                    Image::make($image_temp)->resize(200, 200)->save($webimagefilepath);
                    $photo->path = $filename;
                    $photo->alt_text = "Book sasa property image";
                    $photo->save();
                }

            }
           
        }
    return response()->json("Success");
}

I am using named routes and the name is the one used in the ajax url.

What could I be doing wrong and how can I solve it?

Source