【问题标题】:How can I solve GET ... 405 (Method Not Allowed) when send data via ajax?通过ajax发送数据时如何解决GET ... 405(不允许方法)?
【发布时间】:2018-02-13 13:26:19
【问题描述】:

我的 ajax(在 vue 组件中)是这样的:

<template>
    ...
    <a class="text-right" @click="detail">
        Detail
    </a>
    ...
</template>
<script>
    export default{
        ...
        methods:{
            ...
            detail() {
                this.$http.post(window.BaseUrl + '/shop/',{data: JSON.stringify(this.data)}).then(function (response) {
                    ...
                }).catch(function(error){
                    ...
                });
            }
        }
    }
</script>

如果用户点击一个链接,它将调用详细方法

通过ajax发送数据的详细方法

它将在 laravel 中路由

这样的路线:

Route::group(['prefix' => 'shop','as'=>'shop.'], function () {
    Route::post('/', 'ShopController@index');
    ...
});

然后路由会调用shop controller

这样的控制器:

public function index(Request $request)
{
    dd($request->all());
}

如果代码执行,控制台上会出现这样的错误:

GET http://myshop.dev/shop 405(方法不允许)

我该如何解决这个错误?

【问题讨论】:

    标签: ajax laravel routes laravel-5.3 vuejs2


    【解决方案1】:

    您的路由csrf_token有问题。

    你应该阅读http方法HTTP methods

    Route::post('/', 'ShopController@index'); 更改为Route::get('/', 'ShopController@index');

    显示错误是因为您在使用 post 方法时没有发送 csrf_token。使用 get 方法时,您没有义务包含 csrf 令牌。

    你可以在这里阅读:CSRF Protection

    【讨论】:

      【解决方案2】:

      window.BaseUrl 是否以 / 结尾?

      可能是 laravel 尝试“清理”window.BaseUrl + '/(2 个 / 彼此相邻)

      在这种情况下,laravel 所做的是发送 302 重定向,您能否检查一下您是否在浏览器的网络控制台中看到了该重定向?

      如果有 302,尝试让表单匹配 laravel 尝试使用的 url。

      【讨论】:

        猜你喜欢
        • 2021-06-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-11-13
        • 1970-01-01
        • 2017-05-31
        • 2016-01-31
        • 2013-03-23
        相关资源
        最近更新 更多