Javascript Laravel Ajax 419生产错误,但不是本地开发错误,/storage/logs/Laravel.log中没有任何内容
所以我遇到了这个问题,在通过项目提交AJAX请求时出现了419错误代码。我知道这个错误是由于CSRF令牌没有被传递,或者无效 背后的故事:我在我的项目上创建了一个“维护模式”。此维护模式通过显示503错误页面来限制对前端的访问,但仍允许管理员访问后端以更新站点等。这是使用一些中间件完成的。有关如何实现此功能的更多信息,请参见我的github页面上的代码 所以这可能是我的生产环境中503错误页面的问题?我不太确定 我已经在SOF上查看了这个问题和答案,但它似乎对我没有任何帮助 这是生产站点,请查看控制台以了解更多信息: 以下是我关于419错误的代码: JavascriptJavascript Laravel Ajax 419生产错误,但不是本地开发错误,/storage/logs/Laravel.log中没有任何内容,javascript,php,ajax,laravel,laravel-5,Javascript,Php,Ajax,Laravel,Laravel 5,所以我遇到了这个问题,在通过项目提交AJAX请求时出现了419错误代码。我知道这个错误是由于CSRF令牌没有被传递,或者无效 背后的故事:我在我的项目上创建了一个“维护模式”。此维护模式通过显示503错误页面来限制对前端的访问,但仍允许管理员访问后端以更新站点等。这是使用一些中间件完成的。有关如何实现此功能的更多信息,请参见我的github页面上的代码 所以这可能是我的生产环境中503错误页面的问题?我不太确定 我已经在SOF上查看了这个问题和答案,但它似乎对我没有任何帮助 这是生产站点,请
$(document).ready(function() {
// CSRF Ajax Token
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
// Add Section Post Button
$('#subscribeButton').click(function(event) {
/* Act on the event */
// Clear Feedback Boxes
$('#valid-feedback').css("display", "none");
$('#invalid-feedback').css("display", "none");
// Input Field
var email = $('#email').val();
var token = $('meta[name="csrf-token"]').attr('content');
console.log(email);
console.log(token);
// Post
$.ajax({
type: 'POST',
url: '/email/subscribe/',
dataType: 'json',
data: {
email: email,
"_token": token,
},
success: function (data) {
// Check Server Side validation
if($.isEmptyObject(data.errors)){
// Show the Feedback Div
$('#valid-feedback').css("display", "block");
// Add the Bootsrapt Is Invalid Class
$('#email').addClass('is-valid');
// Validation Failed Display Error Message
$('#valid-feedback').text(data['success']);
// Animate the Object
$('#email').animateCss('tada', function() {});
console.log(data['success']);
}else{
// Show the Feedback Div
$('#invalid-feedback').css("display", "block");
// Add the Bootsrapt Is Invalid Class
$('#email').addClass('is-invalid');
// Validation Failed Display Error Message
$('#invalid-feedback').text(data.errors[0]);
// Animate the Object
$('#email').animateCss('shake', function() {});
console.log(data.errors);
}
},
error: function (data) {
console.log(data);
}
}); // End Ajax POST function
}); // End Click Event
// On Focus of the Email Box
$('#email').focus(function(event) {
/* Act on the event */
$('#valid-feedback').css("display", "none");
$('#invalid-feedback').css("display", "none");
});
}); // End Document Ready
HTML表单
<div class="input-group input-group-newsletter">
<input type="email" class="form-control" placeholder="Enter email..." aria-label="Enter email..." aria-describedby="basic-addon" id="email">
<div class="input-group-append">
<button class="btn btn-secondary" type="button" id="subscribeButton">Notify Me!</button>
</div>
<div id="invalid-feedback" class="invalid-feedback"></div>
<div id="valid-feedback" class="valid-feedback"></div>
</div>
我的路线呢
// Email Routes
Route::prefix('email')->group(function() {
// Create Post Route for subscribing
Route::post('/subscribe', 'EmailSubscriptionsController@subscribe')->name('email.subscribe');
});
为了以防万一,它可以帮助别人,我们遇到了同样的问题,这是由于服务器空间磁盘问题。因此,Laravel无法写入文件(尤其是sessions.php)。检查您的
存储/logs/Laravel.log
文件。应该包含错误的实际堆栈跟踪。日志文件为空。日志文件确实显示了错误,尽管在服务器上设置项目时,我遇到了数据库错误,在运行迁移之前,等等。。。以下是终端视图:您是如何确定错误是由无效的CSRF令牌引起的?还有一个愚蠢的问题,但是,您是否刷新了主页?CSRF令牌最终将在大约15分钟后过期。我只是假设这是一个CSRF问题,因为大多数419错误代码都是这样的。。。或者至少这是我使用谷歌时弹出的声音。对哈哈,我已经刷新了页面。毫无疑问,这太傻了。
// Store the Email into the database
public function subscribe(Request $request) {
// Validate the request
$validator = Validator::make($request->all(), [
'email' => 'required|email|max:255|unique:email_subscribers,email',
]);
// If the validation fails
if($validator->fails()) {
return response()->json([
'errors' => $validator->errors()->all(),
]);
}
// New Section Object
$subscription = new EmailSubscription;
// Add Name into Section Object
$subscription->email = $request->email;
// Save the Section
$subscription->save();
// Return The Request
return response()->json([
'success' => 'You have successfully subscribed! Check your email!'
]);
}
// Email Routes
Route::prefix('email')->group(function() {
// Create Post Route for subscribing
Route::post('/subscribe', 'EmailSubscriptionsController@subscribe')->name('email.subscribe');
});