我有一个问题与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'
]);
meta标记中包含CSRF令牌:
<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".
4条答案
按热度按时间dffbzjpn1#
这可能不是Laravel的问题。我见过如果服务器配置有一点不正常就会发生这种情况。发生的情况是站点被设置为
https
,Apache配置被设置为将http
,端口80的请求重定向到端口443。但在这个过程中,它失去了对request-method(和GET参数)的跟踪。不确定这是你的问题,这是一个全有或全无的事情。但它可能值得一看。
gxwragnw2#
正如@Claymore在上面的回答中所指出的,这几乎总是取决于服务器的配置方式以及API/route的调用方式。(端口443)请求,任何http(端口80)POST请求将被服务器重定向到https,并作为get请求接收。这是我的主要问题,因为我们最近安装了ssl证书,没有'我无法更改移动的应用程序中的API调用协议,这导致请求失败/不需要的请求。
f0brbegy3#
请尝试此操作,同时不要忘记该高速缓存
lp0sw83n4#
非常有趣的效果,这里还没有描述:
在我的例子中,我的URL在末尾包含一个斜杠"/"。
就像这样:
从POST到GET的重定向已经完成(通过jquery,顺便说一句),我感到困惑。
删除URL末尾的斜线可以修复它。
也就是说,像这样: