javascript - 在 Intranet 中启用跨域脚本

标签 javascript jquery sharepoint scripting cross-domain

我在使用集成了共享点、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/

相关文章:

javascript - 元素缩放时 html2canvas 不起作用

c# - 是否可以使用 C# 从 Azure 服务访问 SharePoint Server 数据?

javascript - Webix 上传程序的 onAfterFileDelete 事件

javascript - 在 Chrome 以外的浏览器中过滤链

javascript - 如何在 javascript 中使用 PHP 数组或 json 响应?

Sharepoint:计算列替换所有空格

javascript - 如何重定向或链接到另一个页面的 DIV 元素内的 URL?

javascript - 使用 JS 单击跨度时更改跨度的 onClick

php - 使用 session 在 php 中将商品添加到购物车

javascript - Rails jquery sortable 无法正确保存位置