gpt4 book ai didi

javascript - 在 Intranet 中启用跨域脚本

转载 作者:行者123 更新时间:2023-11-30 10:56:00 25 4
gpt4 key购买 nike

我在使用集成了共享点、SQL 报告服务和一堆使用 ASP.NET MVC 构建的自定义表单的应用程序时遇到了一些问题。

假设我的服务器如下;

  • 苔藓
  • SSRS
  • 自定义表单

在 MOSS 中,我的门户有时需要弹出一个自定义表单来捕获用户输入。我通过使用 jQuery 对话框(使用 Boxy)完成了此操作,该对话框将自定义表单嵌入其中并将门户的 url 传递到其中。自定义表单完成后,它将父窗口(MOSS 门户)导航到传入的 URL,这有效地刷新了页面。

在我们加入 SSRS 的复杂性之前,这一切都很好。

现在在 MOSS 中,我有一份列出一些数据的报告,但 SSRS 报告查看器 Web 部件似乎将它的报告内容放在 iframe 中,这意味着来自报告的超链接不能要求父级覆盖相同的对话框(因为它是跨域的),如果它自己执行覆盖,它只会覆盖 iframe。

抱歉发了这么长的帖子,切入正题 - 这只是一个内部 Intranet 应用程序。是否有可能以某种方式允许跨域脚本编写,以便可以从共享点门户和 SSRS 中的 javascript 控制弹出对话框,而我的自定义表单只能调用父级上的 javascript 方法?

最好我不想在客户端浏览器中进行配置以允许这种情况发生,因为我必须将更改推广到 Assets 中的所有机器 - 这是一个很大的数字。

提前致谢,任何能解决我问题的人都可以喝啤酒 ;)

干杯,托尼

最佳答案

IE8、Firefox 3、最近的 Opera 和 Safari/Chrome 支持 postMessage,它允许不同域上的合作页面相互交谈:

http://ajaxian.com/archives/cross-window-messaging-with-html-5-postmessage

如果您受困于旧版浏览器,您的选择很少。最干净的方法是通过同一个代理发送需要相互通信的所有内容,尽管在 OP 的情况下这似乎是不可能的。

下一个最干净的方法是使用 Flash 的跨域工具。

另一个选项是 xssinterface ,它在可用的地方包装 postMessage,并在不可用的地方使用一些涉及 cookie 和轮询的巫术。

唯一的其他选择是使用隐藏的 iframe - 向页面发送消息,将 iframe 的位置更改为目标页面域中的位置并在目标页面中轮询 - 但我再次认为 OP 案例中的代理使得这行不通。

关于javascript - 在 Intranet 中启用跨域脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1593344/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com