【问题标题】:how to remove 403 error from ajax in laravel post method如何在 laravel post 方法中从 ajax 中删除 403 错误
【发布时间】:2019-02-27 04:03:07
【问题描述】:

我的代码的问题是,如果我尝试通过 ajax 发送数据,它会给我错误,但是我的其他帖子表单工作正常。所以我确信错误必须在路由、路由组或 csrf feild 中出现。我试过了将 csrf 字段放入表单中,在删除按钮中,在输入标签中隐藏,在标题中但 nun 工作。代码在我的计算机上运行得非常好,但在服务器上它给出了 403 Forbidden。已经 4 天了。请提供您宝贵的见解和建议。

       <!DOCTYPE html>
        <html>
        <head>
        <meta name="csrf-token" content="{{ csrf_token() }}" />
        <title></title>
        <style type="text/css" media="screen">


        </style>
        <script src="{{asset('js/admin_update_ajax.js')}}"></script>
        <link href="{!! asset('css/table_layout.css') !!}" media="all" rel="stylesheet" type="text/css" />
        </head>
        <body>

        <table class="table">
        <thead>
        <tr>
        <th style="text-align:center">Id</th>
        <th style="text-align:center">Extra Details</th>
        <th style="text-align:center">Update</th>
        <th style="text-align:center">Delete</th>
        </tr>
        </thead>
        <tbody>
        <?php foreach ($details as $value): ?>
        <tr>
        <td style="font-weight: bold">{{ $value->id }}</td>

        <td>{{ $value->extra_detail }}</td>
        <td> <button class="btn btn-success btn-md" data-toggle="modal" data-target="#modalForm">Update</button></td>
        <td><button type="button" class="btn btn-danger">Delete</button></td>
        </tr>
        </tr>
        <?php endforeach ?>
        </tbody>
        </table>


        <div class="modal fade" id="modalForm" role="dialog">
        <div class="modal-dialog">
        <div class="modal-content">
        <!-- Modal Header -->
        <div class="modal-header">
        <h4 class="modal-title" id="myModalLabel">Contact Form</h4>
        <button type="button" class="close" data-dismiss="modal">
        <span aria-hidden="true">&times;</span>
        <span class="sr-only">Close</span>
        </button>

        </div>

        <!-- Modal Body -->
        <div id="showmessage">
        <div class="modal-body">
        <p class="statusMsg"></p>
        <div id="hidebody">
        <form role="form" id="update_form" method="POST">
        <input type="hidden" name="_token" id="token" value="{{ csrf_token() }}">

        <div >Id:<span id="idfromtable"></span></div>
        <div class="form-group">
        <label for="starting_date">Starting Date</label>
        <input type="date" class="form-control" id="starting_date" placeholder="Enter starting date">
        </div>
        <div class="form-group">
        <label for="ending_date">Ending Date</label>
        <input type="date" class="form-control" id="ending_date" placeholder="Enter Ending date">
        </div>
        <div class="form-group">
        <label for="extra_details">Extra Details</label>
        <textarea  class="form-control" id="extra_detail" placeholder="Enter Ending date"></textarea>
        </div>
        </form>
        </div>
        </div>
        </div>
        <!-- Modal Footer -->
        <div class="modal-footer">
        <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
        <button type="button" class="btn btn-primary submitBtn" onclick="submit_update_form()">SUBMIT</button>
        </div>
        </div>
        </div>
        </div>
        </body

        > Blockquote

Java 脚本代码是

function submit_update_form(){

        var starting_date = document.forms["update_form"]["starting_date"].value;
        alert(starting_date);
        var ending_date = document.forms["update_form"]["ending_date"].value;
        alert(ending_date);
        var extra_detail = document.forms["update_form"]["extra_detail"].value;
        alert(extra_detail);



        $.ajax({
        type: "POST",
        headers: {
            'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content')
        },
        url: "/check",
        data: {
        id:id,
        table_name:table_name,
        exam_name:exam_name,
        link:link,
        extra_detail:extra_detail

        },
        success: function(resultData) { alert(resultData) }
        });

        alert("update end from modal");
        }

这是我的路线文件

Route::post('/check', 'AdminController@index');

我的控制器

public function index()
{

    return "Data Inserted Successfully In Table ";
}

【问题讨论】:

  • 遇到什么错误可以分享一下
  • 请分享您的错误日志?
  • 在 f12 中出现 403 错误。
  • 在哪里可以找到日志文件。

标签: ajax laravel server routes http-status-code-403


【解决方案1】:

添加以下代码

<script>
    $(function () {
        $.ajaxSetup({
            headers: {
                'X-CSRF-Token': "<?php echo csrf_token() ?>"
            }
        });
    });
</script>

【讨论】:

    【解决方案2】:

    您必须在请求标头中传递csrf-token

    $.ajax({
        type: "POST",
        headers: {
            'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
        },
        url: "/check",
        data: {
            id:id,
            table_name:table_name,
            exam_name:exam_name,
            link:link,
            extra_detail:extra_detail
        }
    

    【讨论】:

    • 如果 CSRF 发送正确,您是否检查了浏览器网络调试器选项卡?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-25
    • 2023-03-10
    • 2018-01-13
    • 2018-03-07
    • 2017-05-30
    • 1970-01-01
    • 2021-02-11
    相关资源
    最近更新 更多