是的,我在过去遇到过这个错误,它与csrf令牌有关,但过去我只是去了中间件VerifyCSRF文件并在忽略列表中包含了该路由。
然而现在这不起作用。我很困惑。
我能想到的唯一区别是我第一次在服务器上进行生产,而现在我在cloud9中进行编码并使用https但是,因为当你在https页面中有易受攻击的代码时,firefox会出现问题,我停用了它,否则网站上的任何内容都不会显示。但那应该没什么可做的。
令我感到困惑的另一件事是,在加载页面时,我已经可以在firebug中看到500错误,但这应该仅在更改选择列表时激活,但是它确实只在页面加载时发生。< / p>
以下是完整代码:
我有部分内容,因为它将被2页使用:
<script>
jQuery(document).ready(function () {
cargarProvincias();
// cargarCiudades();
$('#country').change(cargarProvincias);
$('#regions').change(cargarCiudades);
});
function cargarProvincias() {
var country = $('#country').val();
$regionsurl = "{{URL::route('findcountries')}}";
$.post($regionsurl, {country:country},function(data){
$('#regions').empty();
$.each(data, function(key, value){
$('#regions').append('<option value="' + key + '">' + value + '</option>')});
cargarCiudades();
});
}
function cargarCiudades(){
// alert("You have Selected :: "+$(this).val());
var region = $('#regions').val();
$url = 'http://chefvillas.com/localidades';
$.post($url, {localidad:region},function(data){
$('#towns').empty();
$.each(data, function(key, value){
var option = $('<option/>', {'id':key, 'text':value});
$('#towns').append(option);
});
});
}
</script>
然后这是路线:
Route::get('/', 'SearchController@welcome');
Route::post('/', ['as' => 'findcountries','uses'=>'SearchController@findcountries' ]);
这是控制器
public function welcome(){
$countries = Property::distinct()->select('country')->get();
return view('welcome', ['countries' => $countries]);
}
public function findCountries(){
$pais = Input::get('country');
print_r($pais); // but I never get here because the error blocks it before
}
我也试过这个,但反馈没有变化
public function findCountries(){
if (Request::ajax())
{
$pais = Input::get('country');
var_dump($pais);
}
到目前为止,我已经被困了一整天了。我试图改变路由的语法,尽管这与我过去使用的代码相同。
更新
此处“网络”选项卡状态确认它是csrf错误:(令牌不匹配异常)
但我已将URI添加到忽略列表
<?php
namespace App\Http\Middleware;
use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as BaseVerifier;
class VerifyCsrfToken extends BaseVerifier
{
/**
* The URIs that should be excluded from CSRF verification.
*
* @var array
*/
protected $except = ['findcountries'];
}
TokenMismatchException in VerifyCsrfToken.php line 67:
in VerifyCsrfToken.php line 67
at VerifyCsrfToken->handle(object(Request), object(Closure))
at call_user_func_array(array(object(VerifyCsrfToken), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in ShareErrorsFromSession.php line 49
at ShareErrorsFromSession->handle(object(Request), object(Closure))
at call_user_func_array(array(object(ShareErrorsFromSession), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in StartSession.php line 62
at StartSession->handle(object(Request), object(Closure))
at call_user_func_array(array(object(StartSession), 'handle'), array(object(Request), object(Closure))) in Pipeline.php line 124
at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 32
at Pipeline->Illuminate\Routing\{closure}(object(Request)) in AddQueuedCookiesToResponse.php line 37
at AddQueuedCookiesToResponse->handle(object(Request), object(Closure))
更新2
我已将其包含在单独的文件中
// public/js/config.js
$(function () {
$.ajaxSetup({
headers: { 'X-CSRF-TOKEN': $('meta[name="_token"]').attr('content') }
});
});
还有这个metatag
<meta name="csrf-token" content="{{ csrf_token() }}" />
然而,我一直警告的一件事就是橙色的小三角形说:
$ is not defined; please fix or add/* global $*/
但它不仅仅是关于jquery(因为它已经安装并且它可以工作,因为我有一个工作滑块)但是任何包含$的行。如果是$ url,则表示url未定义。
答案 0 :(得分:0)
当您的第一个ajax调用成功时,您的第二个发布请求:cargarCiudades()
正在调用,并且您已将{2}数组中的第二个发布路由包含在您的csrf中间件中,而您已包含$except
1}}在请求的参数中。
我认为在调用第二个请求时会抛出csrt_token
。
答案 1 :(得分:0)
写下路线 URI ,而不是路线 NAME 。
protected $except = ['/'];