潜在的危险请求。仅来自IE8的形式值
-
17-09-2020 - |
题
我有一个Facebook风格的现代按钮控制,其客户端侧标记看起来像:
<button id="ctl00_uxBtn" value="ctl00$uxBtn" name="ctl00$uxBtn type="submit">
<div style="background-image: url("Icons/page_edit.png"); background-position: left center; background-repeat: no-repeat; line-height: 16px; padding: 3px 0pt 3px 22px;">Save Draft</div>
</button>
.
此按钮使用Visual Studio 2010 Web服务器与IE和FF一起工作,但是当我将应用程序部署到服务器时(Windows Server 2008 / IIS 7.0),我得到“潜在的危险请求。检测到”错误,但只有IE。看来,IE是通过CTL00_UXBTN=“
解决方案 2
IE坚持在<按钮>和之间作为按钮的值发送内容,并且似乎没有阻止它的方法。因此,我们使用Onsubmit事件处理程序拦截客户端上的请求,如下所示:
<form id="form1" runat="server" onsubmit="fixModernButton()">
.
我们的JavaScript函数然后检查浏览器是否具有IE,如果按钮的innerHTML属性以“<”开头。如果是,它是标记,并将导致ASP.NET提高“潜在危险的请求.Form值”错误,因此我们将innerhtml属性的值设置为Innertext属性的值,然后提交表单。JavaScript函数的源是:
function fixModernButton() {
if (navigator.appName === 'Microsoft Internet Explorer') {
if (document.activeElement.innerHTML && document.activeElement.innerHTML.charAt(0) === '<') {
document.activeElement.innerHTML = document.activeElement.innerText;
}
}
document.forms['form1'].submit();
}
. 其他提示
您需要使用正确的引号:
<button id="ctl00_uxBtn" value="ctl00$uxBtn" name="ctl00$uxBtn" type="submit">
<div style="background-image: url('Icons/page_edit.png'); background-position: left center; background-repeat: no-repeat; line-height: 16px; padding: 3px 0pt 3px 22px;">Save Draft</div>
</button>
.
我会建议您没有将CSS和标记混合并将此规则外化为单独的CSS:
.edit {
background-image: url('Icons/page_edit.png');
background-position: left center;
background-repeat: no-repeat;
line-height: 16px;
padding: 3px 0pt 3px 22px;
}
.
然后将其应用于div:
<button id="ctl00_uxBtn" value="ctl00$uxBtn" name="ctl00$uxBtn" type="submit">
<div class="edit">Save Draft</div>
</button>
.
这将使您的标记更清洁,保留带宽,并避免使用您使用适当引号所做的错误。
不隶属于 StackOverflow