我真的很感激一些帮助.我在这个论坛上发布了大量的解决方案,但我无法让它发挥作用.
我的ajax电话是这样的
$(document).ready(function() {
$("#company").click(function() {
$.ajax({
type: "POST",
dataType:'html',
url : "/company",
success : function (data) {
$("#result").html(data);
}
});
});
});
Run Code Online (Sandbox Code Playgroud)
我通过我的路线呼叫视图
Route::post('/company', 'Ajaxcontroller@loadContent');
Run Code Online (Sandbox Code Playgroud)
和控制器
public function loadContent()
{
return view('listing.company')->render();
}
Run Code Online (Sandbox Code Playgroud)
我的company.blade.php是
@foreach ($companies as $company)
<div class="posting-description">
<h5 class="header"><a href="#"></a>{{$company->name}}
</h5>
<h5 class="header"> {{$company->streetaddress}} {{$company->postalcode}}</h5>
<p class="header">
<span class="red-text"> <?= $service; ?> </span> is available on <span class="green-text"><?php echo $date; ?></span>
</p>
@endforeach
Run Code Online (Sandbox Code Playgroud)
我收到了这个错误
POST http://127.0.0.1:8234/company 419 (unknown status)
Run Code Online (Sandbox Code Playgroud) 概念:我有一个允许用户发布问题的应用程序......当用户点击Ask按钮时,我试图使用Vue.js和Axios提交问题.
问题: 70%的时间问题正确提交,但30%的时间失败并返回"无法加载资源:服务器响应状态为419(未知状态)"
我的Vue组件
<template>
<div id = "main_question_box" class = "tab-pane fade">
<div class="panel-body posting-field-box">
<textarea name="feed_body" class="summernote posting-field form-control"></textarea>
<button class = "example-btn btn btn-xs btn-default pull-right">View Question Examples</button>
</div>
<div class="panel-footer">
<ul class="list-inline pull-right">
<li>
<button @click = "sendPost" class="feed-post-btn btn btn-submit btn-sm btn-success pl-l pr-l">
<span>Ask</span>
<i class="fa fa-paper-plane pl-sm"></i>
</button>
</li>
</ul>
<div class="clearfix"></div>
</div>
</div>
</template>
<script>
axios.defaults.headers.common['X-CSRF-TOKEN'] = document.querySelector('meta[name="csrf-token"]').getAttribute('content')
export default {
props:['timelineId'],
data(){
return {
feed_body: '',
timeline_id: this.timelineId,
type: 'Question', …Run Code Online (Sandbox Code Playgroud) 我想使用 ck 编辑器存储我的图像。但即使我将 csrf 令牌设置为请求标头,它也会返回 419 http 状态。
let token = document.head.querySelector('[name=csrf-token]').content,
document.querySelector('#article_editor').on('fileUploadRequest', function (evt) {
var xhr = evt.data.fileLoader.xhr;
xhr.setRequestHeader('Cache-Control', 'no-cache');
xhr.setRequestHeader('X-File-Name', this.fileName);
xhr.setRequestHeader('X-File-Size', this.total);
xhr.setRequestHeader('X-CSRF-Token', token);
xhr.send(this.file);
// Prevented the default behavior.
evt.stop()
});
Run Code Online (Sandbox Code Playgroud)
我怎样才能解决这个问题 ?
我已经在 head 标签之间设置了 csrf 元数据。尽管如此,我还是不断收到错误..
<head>
...
<meta name="csrf-token" content="{{ csrf_token() }}">
...
</head>
Run Code Online (Sandbox Code Playgroud) 我真的很感谢这方面的帮助。我尝试了其他人在其他帖子上建议的所有解决方案,包括:Laravel 5.5 ajax调用419(未知状态)和此Ajax LARAVEL 419 POST错误解决方案。
但是,即使在头部设置了csrf_token元标记,我仍然会收到419错误:
<meta name="csrf-token" content="{{ csrf_token() }}">
Run Code Online (Sandbox Code Playgroud)
在ajax发布调用之前,我像这样设置ajax csrf_token:
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
Run Code Online (Sandbox Code Playgroud)
之后,我将ajax数据中的csrf_token作为变量发送,如下所示:
$.ajax({
url : "/getCompare",
type :"POST",
cash : false,
data :{ id : id,_token: '{{csrf_token()}}'},
success :
function( response ) {
$("#compare_products").html(response);
}
});
Run Code Online (Sandbox Code Playgroud)
页面的应用方式使用户反复请求ajax调用以比较产品。它在很多尝试下都可以正常工作,但是在特定情况下,会引发419错误。这种情况有时是当我在页面加载后大约3分钟按下一个按钮时,出现了这个错误。有时它会在第三次或第四次尝试时给出错误。重新加载页面后,问题已解决,但仍然按照我解释的方式再次发送该错误。
我的问题是为什么会这样?是3分钟后csrf_token过期还是什么?而且我不想在verifyCsrfToken中间件中添加异常。该问题的解决方案是什么?
PS: leorent的答案是正确的。但是将我的项目上传到实际的在线服务器后。问题已经解决了。我不知道为什么,但是这个问题是因为Windows和在本地主机中本地运行laravel项目。csrf令牌会话在寡妇localhost服务器上经常过期。不用担心,将项目上传到实际服务器后,您的csrf问题将自动得到解决。
我想使用ajax提交我的表单以下是我的javascript
$.ajax({
type: "POST",
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
url: "http://localhost/shago/register/submit",
data: user_firstname,
dataType: "text",
success: function(resultData) { alert("Save Complete") }
});
Run Code Online (Sandbox Code Playgroud)
我在表单中包含了元标记
<div id="individual" class="hid">
<form method="POST" id="individual_form" name="individual_form" action="{{ route('register.submit') }}">
<meta name="csrf-token" content="{{ csrf_token() }}">
Run Code Online (Sandbox Code Playgroud)
在控制器中我刚刚回复了一条消息,但我得到了
POST http:// localhost/shago/register/submit 419(未知状态)
以上错误可以帮助我,让我知道任何其他输入我知道它主要是由csrf令牌引起的(我已经在web.php和api.php文件中声明了提交路由)
ajax ×4
laravel ×4
laravel-5 ×3
php ×3
jquery ×2
axios ×1
ckeditor ×1
http-status ×1
laravel-5.5 ×1
vuejs2 ×1