我最近迁移到Laravel 5,现在每个帖子提交都会进行CSRF检查.我想要删除它,但我想遵循最佳实践,所以我会保持这种方式.
另一方面,我提交ajax请求时出现问题..我的页面有多个表单,有些提交甚至不是来自表单,只是简单的ajax调用.我的想法是在页面上有一个隐藏的"令牌"输入并将其附加到每个提交.拥有通用单一令牌输入有任何缺点吗?
另外,我该如何输出令牌?在页脚上创建一个隐藏的输入是否可以?
我有这种形式,用户只应在文本区域内键入文本:
<form action="#" v-on:submit="postStatus">{{-- Name of the method in Vue.js --}}
<div class="form-group">
<textarea class="form-control" rows="5" maxlength="140" autofocus placeholder="What are you upto?" required v-model="post"></textarea>
</div>
<input type="submit" value="Post" class="form-control btn btn-info">
{{ csrf_field() }}
</form>
Run Code Online (Sandbox Code Playgroud)
然后,我有这个脚本代码,我将vue.js与ajax一起使用,以便将该文本传递给控制器并最终将其保存到数据库中:
//when we actually submit the form, we want to catch the action
new Vue({
el : '#timeline',
data : {
post : '',
},
http : {
headers: {
'X-CSRF-Token': $('meta[name=_token]').attr('content')
}
},
methods : {
postStatus : function (e) {
e.preventDefault();
console.log('Posted: '+this.post+ …Run Code Online (Sandbox Code Playgroud) 在Cakephp3中启用Csrf组件时.我如何在ajax调用中使用它.在此beforeSend参数中,ajax csrf标记在标头中设置.什么是价值csrfToken.因为它给出了错误
csrfToken未定义
beforeSend: function(xhr){
xhr.setRequestHeader('X-CSRF-Token', csrfToken);
},
Run Code Online (Sandbox Code Playgroud)
另外,如何禁用某些ajax调用的Csrf组件.
我正在尝试使用动态填充的字段创建Django表单:也就是说,当checkin_type从下拉菜单中选择一个字段()时,其他字段会自动填充相应的数据。为此,一旦选择了下拉选项,我想向服务器发送POST请求。
到目前为止,我已经尝试了以下模板(遵循https://docs.djangoproject.com/en/2.0/ref/csrf/):
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/js-cookie@2/src/js.cookie.min.js"></script>
<script>
$(document).ready(function(){
var csrftoken = Cookies.get('csrftoken');
$(".auto-submit").change(function() {
$.post({
url: "{% url 'get-checkin-type' %}",
data: $(".auto-submit option:selected").val(),
headers: {
X-CSRFToken: csrftoken
}
})
});
});
</script>
<form action="" method="post">{% csrf_token %}
{% for field in form %}
<div class="{% if field.name == 'checkin_type' %}auto-submit{% endif %}">
{{ field.errors }}
{{ field.label_tag }}
{{ field }}
</div>
{% endfor %}
<input type="submit" value="Send message" />
</form>
Run Code Online (Sandbox Code Playgroud)
但是,当我选择一个下拉选项时,
新增:17个未捕获的SyntaxError:意外令牌-
从该X-CSRFToken: csrftoken …
如何在我的 Laravel 应用程序的 ajax 请求(GET 或 POST)中自动添加 csrf 令牌,而无需手动将其添加到每个请求中。
我的ajax请求
$.ajax({
type:'post',
url: "/email/unique",
data: { "_token": "{{ csrf_token() }}", "email": email }
success: function(data) {
console.log(data);
}
});
Run Code Online (Sandbox Code Playgroud) laravel ×3
ajax ×2
csrf ×2
javascript ×2
jquery ×2
cakephp ×1
cakephp-3.x ×1
csrf-token ×1
django ×1
django-csrf ×1
laravel-5.3 ×1
php ×1
vue.js ×1