0

我尝试在 javascript 中使用 Location=0 来隐藏托管 ReportViewer 的弹出窗口中的 URL 地址栏,但由于某些(显然是“安全”)原因它不起作用,并且我的 Azure 托管 Silverlight 应用程序的用户,其中一些来自竞争公司,可以猜测对方的报价 ID,并查看谁在为他们所追求的同一业务报价。

我知道我可以加密 ID,但我希望有一种更直接的方法可以将 ID 提供给 Report.aspx 文件中的 ReportViewer 控件/ObjectDataSource,而不使其作为 URL 参数可见?

建议非常感谢。

4

1 回答 1

0

您可以在您的页面上调用 s JavaScript(由 jQuery 驱动)函数,提供, 然后,您可以使用 a打开一个带有报告的新窗口ID,而不是打开一个普通的 POPUP 。当然做完了。GETPOSTPOSTHTTPS

除此之外,您在安全性方面非常担心气味。ReportViewer如果请求的参数不属于请求者,为什么还要允许渲染 a ?

出于安全考虑,您应禁用对您的应用程序的匿名访问。然后你就会知道哪个用户被记录了。然后,您可以轻松地将用户与报价 ID 联系起来。然后,您可以轻松地检查 givenquote 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();
}

您可以通过创建附加隐藏输入随意管理输入字段的数量(即要发送的参数)。

于 2012-10-15T19:11:47.850 回答