[英]window.location.href = window.location.href and JSLint
[英]Adding CSRF token for window.location.href
我在我的javascripts中使用了window.location.href
几个地方。 是否有任何通用方法可以为所有这些添加CSRF令牌?
由于window.location是一个对象而
window.location.href
是其属性之一,因此我们无法覆盖它。编写类似下面的常用函数并路由所有实例将更加手动和耗时。
addCSRFAndProceed(url);
function addCSRFAndProceed (url) {
window.location.href = url + getCSRFTokenAndValue();
}
后端代码以下是从后端设置CSRF cookie的代码。
$_COOKIE['CSRFTOKEN'] = '123456';
HTML代码
<div class="redirect-button" onclick="TriggerRequest()">
Javascript代码
function TriggerRequest() {
window.location.href="www.mysite.com/?index.php&from=desktop";
}
我有不同的函数,它们使用window.location.href
并期望一个通用的解决方案将令牌附加到url,因为手动追加所有函数会很忙。
让我从laravel作为后端情况说话(在我的例子中只有一行相关,因为令牌必须来自某个地方)
<meta id="csrf" name="csrf-token" content="{{ csrf_token() }}">
会在id
csrf的元标记中输出csrf标记吗?
使用和修改重定向代码的方法如下:
addCSRFAndProceed(url);
function addCSRFAndProceed (url) {
window.location.href = url + '?token=' + getCSRFTokenAndValue();
}
function getCSRFTokenAndValue() {
return document.getElementById("csrf").getAttribute('content');
}
您还应该为后端编写代码来检查查询字符串参数token
然后只返回请求的页面。 (服务器端验证)
伪代码(仍然不知道你的后端)
if ($query_string_array['token'] == 'accepted token') {
return view:page;
} else {
return error: token does not match;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.