如何在 javaScript 获取 CSRF 令牌值
How to get CSRF token Value at javaScript
我有这样的要求,当我发送请求时,CSRF-token
应该一起发送。我探索了一些 SO 问题,但找不到解决方案。
我已经编写了如下代码来在发送请求时添加令牌,
var send = XMLHttpRequest.prototype.send,
token = $('meta[name=csrf-token]').attr('content');
XMLHttpRequest.prototype.send = function(data) {
this.setRequestHeader('X-CSRF-Token', "xyz12345");
//this.setRequestHeader('X-CSRF-Token',getCSRFTokenValue());
return send.apply(this, arguments);
}
这工作正常,但现在我需要在函数中添加 CSRF-Token 来代替 xyz12345
。
我试过 ajax 功能如下。
`
$.ajax({
type: "POST",
url: "/test/"
//data: { CSRF: getCSRFTokenValue()}
}).done(function (data) {
var csrfToken = jqXHR.getResponseHeader('X-CSRF-TOKEN');
if (csrfToken) {
var cookie = JSON.parse($.cookie('helloween'));
cookie.csrf = csrfToken;
$.cookie('helloween', JSON.stringify(cookie));
}
$('#helloweenMessage').html(data.message);
});
但还没有完成。
所以我的问题是:
如何获取js端的CSRF-Token值?
我通过这种方式获得了我的CSRF Token,
通过添加功能:
$.get('CSRFTokenManager.do', function(data) {
var send = XMLHttpRequest.prototype.send,
token =data;
document.cookie='X-CSRF-Token='+token;
XMLHttpRequest.prototype.send = function(data) {
this.setRequestHeader('X-CSRF-Token',token);
//dojo.cookie("X-CSRF-Token", "");
return send.apply(this, arguments);
};
});
其中 CSRFTokenManager.do
将从 CSRFTokenManager
Class 调用。
现在它在 header 中添加令牌,在每个请求中添加 cookie。
您需要在新 Laravel
中执行此操作
var csrf = document.querySelector('meta[name="csrf-token"]').content;
$.ajax({
url: 'url',
type: "POST",
data: { 'value': value, '_token': csrf },
success: function (response) {
console.log('value set');
}
});
我有这样的要求,当我发送请求时,CSRF-token
应该一起发送。我探索了一些 SO 问题,但找不到解决方案。
我已经编写了如下代码来在发送请求时添加令牌,
var send = XMLHttpRequest.prototype.send,
token = $('meta[name=csrf-token]').attr('content');
XMLHttpRequest.prototype.send = function(data) {
this.setRequestHeader('X-CSRF-Token', "xyz12345");
//this.setRequestHeader('X-CSRF-Token',getCSRFTokenValue());
return send.apply(this, arguments);
}
这工作正常,但现在我需要在函数中添加 CSRF-Token 来代替 xyz12345
。
我试过 ajax 功能如下。 `
$.ajax({
type: "POST",
url: "/test/"
//data: { CSRF: getCSRFTokenValue()}
}).done(function (data) {
var csrfToken = jqXHR.getResponseHeader('X-CSRF-TOKEN');
if (csrfToken) {
var cookie = JSON.parse($.cookie('helloween'));
cookie.csrf = csrfToken;
$.cookie('helloween', JSON.stringify(cookie));
}
$('#helloweenMessage').html(data.message);
});
但还没有完成。 所以我的问题是: 如何获取js端的CSRF-Token值?
我通过这种方式获得了我的CSRF Token, 通过添加功能:
$.get('CSRFTokenManager.do', function(data) {
var send = XMLHttpRequest.prototype.send,
token =data;
document.cookie='X-CSRF-Token='+token;
XMLHttpRequest.prototype.send = function(data) {
this.setRequestHeader('X-CSRF-Token',token);
//dojo.cookie("X-CSRF-Token", "");
return send.apply(this, arguments);
};
});
其中 CSRFTokenManager.do
将从 CSRFTokenManager
Class 调用。
现在它在 header 中添加令牌,在每个请求中添加 cookie。
您需要在新 Laravel
中执行此操作var csrf = document.querySelector('meta[name="csrf-token"]').content;
$.ajax({
url: 'url',
type: "POST",
data: { 'value': value, '_token': csrf },
success: function (response) {
console.log('value set');
}
});