php - AJAX/JS 表单防止 cookie 被设置
问题描述
解决了:
添加Header add Access-Control-Allow-Credentials: true
到 .htaccess 文件,然后将 Access-Control-Allow-Origin 修改为发送 AJAX 调用的域。AJAX 调用必须包括:
xhrFields: {
withCredentials: true
},
--
我在后端有一个 API 调用,它在浏览器中设置了一个 cookie,如果我通过普通的 HTML 表单提交用户登录详细信息,它工作正常。但是,如果我在表单中添加 AJAX 以防止事件默认值并从服务器获取回复,则不会设置 cookie...
{{-- Log In Form Script --}}
<script>
$(document).ready(function(){
$(function() {
$('#login-form').submit(function(event) {
// event.preventDefault();
var formEl = $(this);
var submitButton = $('input[type=submit]', formEl);
$.ajax({
type: 'POST',
url: formEl.prop('action'),
accept: {
javascript: 'application/javascript'
},
data: formEl.serialize(),
beforeSend: function() {
submitButton.prop('disabled', 'disabled');
},
statusCode: {
401: function() {
$("#login-button").css('background-color','red');
$('#login-submit-label').text('Incorrect Email or Password!');
//replace with data.message
$("#login-submit-label").show();
},
403: function() {
$("#login-button").css('background-color','#ffbf00');
$('#login-submit-label').text('Account not activated. Check your inbox!');
//replace with data.message
$("#login-submit-label").show();
}
}
}).done(function(data) {
if((data.status == "ACCESS") || (data.status == "COOKIE")){
$("#login-button").css('background-color','#1e3296');
// var button = document.getElementById("login-button");
// button.classList.toggle("btn-custom");
$("#log-in-spinwheel").show();
}else{
//
}
console.log(data);
submitButton.prop('disabled', false);
});
});
});
});
</script>
Cookie 设置如下:
setcookie('auth_token', $randomtoken, time() + (86400 * 30), '/');
.htaccess 文件已经有以下代码行用于 CORS 错误:
Header add Access-Control-Allow-Origin "*"
Header add Access-Control-Allow-Headers "origin, x-requested-with, content-type"
Header add Access-Control-Allow-Methods "PUT, GET, POST, DELETE, OPTIONS"
解决方案
推荐阅读
- hadoop - 如何在结构类型列中创建带有“@”的配置单元表?
- angular - Angular 6 Ngx typeahead 选项渲染
- google-cloud-platform - 如何仅从我的帐户内部 IP 地址授予对我的 GCP 实例之一的访问权限
- javascript - 如何将 spring.bind 变量从 freemaker 传递给 javascript 函数
- java - 维护链表插入的顺序
- google-chrome - 我可以使用 SVG 工具栏图标吗?
- python-3.x - 如何将聊天机器人用于多个标签
- javascript - 如何在 Angular 7 打字稿中使用 isNaN 和 charAt?
- knex.js - 在`.increment()`方法之后是否有必要使用`.primary()`方法?
- r - 矩阵的值分配在 r 中不起作用