我遇到了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".
答案 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调用协议,从而导致请求失败/不希望的请求。