【发布时间】:2018-07-27 10:37:05
【问题描述】:
以下表单需要一个名为 IMPORTANT_COOKIE 的 cookie 才能提交。当用户提交表单时,正在检查 cookie 的存在。只要用户单击提交按钮,一切都很好,但是当与代码一起提交时,测试将被完全忽略(如下面的链接)。如何 100% 确定涵盖所有表单提交方式?
<form action="javascript:alert('FORM FIRED');" method="post" id='form1'>
<input type="text" name="something" value="something">
<input type="submit">
</form>
<a href="javascript:document.getElementById('form1').submit();">Bypass important cookie test</a>
<script>
function callback(e) {
e.preventDefault();
return waitForCookie().then(cookie => {
return this.submit();
});
}
function waitForCookie() {
return new Promise(function (resolve, reject) {
var intervalID = setInterval(checkForCookie, 1000);
function checkForCookie() {
var cookie = getCookie();
if (cookie) {
clearInterval(intervalID);
resolve(cookie);
}
}
});
}
function getCookie() {
if (document.cookie.indexOf('IMPORTANT_COOKIE') == -1) {
console.log("No cookie found - sorry")
return undefined;
} else {
console.log("Hurray! Cookie found - proceeding")
return 'cookie!';
}
}
document.getElementById('form1').addEventListener("submit", callback, false);
</script>
【问题讨论】:
-
在后端测试cookie?
-
我只控制前端(它只是一个JS插件)。
标签: javascript forms validation submit