我尝试在javascript中使用Location = 0来隐藏托管ReportViewer的弹出窗口中的URL地址栏,但是对于某些(显然是“安全”)原因它不起作用,以及我的Azure托管的用户Silverlight应用程序,其中一些来自竞争公司,可以猜出彼此的报价ID,看看谁在引用他们所追求的同一业务的内容。
我知道我可以加密ID,但我希望有更直接的方法在Report.aspx文件中为ReportViewer控件/ ObjectDataSource提供ID,而不会将其作为URL参数显示?
建议非常感谢。
答案 0 :(得分:0)
您可以在页面上调用s JavaScript(jQuery powered)函数,提供ID
,然后,您可以执行GET
而不是使用POST
打开普通POPUP。用报告打开一个新窗口。当然比POST
做HTTPS
。
除此之外,你在安全性方面也有很多气味。如果请求的参数不属于请求者,为什么甚至允许呈现ReportViewer
?
关注安全性,您应禁用匿名访问您的应用。然后你就会知道记录了哪个用户。然后,您可以轻松地将用户与引用ID相关联。然后,您可以轻松地检查给定quote id
或请求的任何参数是否属于请求它的用户。
顺便问一下,AZURE
具体到底是什么?这是一般的Web开发问题,而不是Azure特定的。
使用POST打开窗口的示例JS函数
function OpenWin(someId)
{
var form = document.createElement('form');
form.action = 'URL_TO_YOUR_RDLC_ASPX_PAGE';
form.method = "POST";
form.target = '_blank'; // this is important to open a new window
var hiddenId = document.createElement('input');
hiddenId.name = 'theNameOfTheParam';
hiddenId.value = someId;
form.appendChild(hiddenId);
document.body.appendChild(form);
form.submit();
}
您可以通过创建额外的隐藏输入来管理输入字段的数量(即要发送的参数)。