Laravel正在发送GET而不是POST请求

时间:2018-03-26 13:09:45

标签: php ajax laravel

我遇到了Laravel和POST请求的问题。我的路由定义为POST,AJAX中使用的方法是POST,但它不断发送GET请求。如果我将路由更改为未定义路由,则它会发送POST,但如果我将此路由定义为POST,则会发送GET请求。

AJAX:

$.ajax({
    method: "POST",
    url: "{{ url('admin/rentacar/save_availability_for_d') }}",
    headers: {
        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
    },
    data: $(form).serialize(),
    dataType: "json",
    success(result){
        //
    }
});

路线定义为:

Route::post('save_availability_for_d', [
    'as' => 'save_availability_for_d', 
    'uses' => 'RentacarController@saveCarAdjustment'
]);

CSR标记包含在元标记中:

<meta name="csrf-token" content="{{ csrf_token() }}">

当我尝试发送AJAX请求时,这是在控制台中发生的事情:

XHR finished loading: GET "http://www.carsrental.me/public/me/admin/rentacar/save_availability_for_d".

如果我在末尾追加一个随机字符以瞄准不存在的路线,就会发生这种情况

XHR failed loading: POST "http://www.carsrental.me/public/admin/rentacar/save_availability_for_dd".

3 个答案:

答案 0 :(得分:4)

这可能不是Laravel的事情。我已经看到如果服务器配置稍微关闭会发生这种情况。发生的事情是该网站被设置为https,并且Apache配置被设置为重定向http,端口80,请求到端口443.但是在此过程中,它正在失去对请求方法(和GET参数)。

不确定这是你的确切问题,这是一种全有或全无的事情。但值得一看。

答案 1 :(得分:0)

尝试此操作并且不要忘记清除缓存

$.ajax({
      url: '{{route('save_availability_for_d')}}',
      dataType: 'json',
      type: 'POST',
      data: $(form).serialize(),
      success: function (result) {
      }
});

答案 2 :(得分:-1)

正如@Claymore在上面的答案中指出的那样,几乎总是服务器的配置方式以及如何调用API /路由。如果服务器配置为仅允许https(端口443)请求,则任何http(端口80)POST请求都将由服务器重定向到https,并作为获取请求接收。 这是我的主要问题,因为我们最近安装了ssl证书,并且没有从移动应用程序更改API调用协议,从而导致请求失败/不希望的请求。