Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在intranet中启用跨域脚本_Javascript_Jquery_Sharepoint_Scripting_Cross Domain - Fatal编程技术网

Javascript 在intranet中启用跨域脚本

Javascript 在intranet中启用跨域脚本,javascript,jquery,sharepoint,scripting,cross-domain,Javascript,Jquery,Sharepoint,Scripting,Cross Domain,我在一个集成sharepoint、SQL reporting services和一系列使用ASP.NET MVC构建的自定义表单的应用程序中遇到了一些问题 假设我的服务器如下所示 苔藓 SSR 自定义表格 在MOSS中,我的门户有时需要弹出一个自定义表单来捕获用户输入。我已经通过使用jQuery对话框(使用Boxy)完成了这项工作,该对话框在中构建自定义表单,并将门户的url传递给它。自定义表单完成后,它会将父窗口(MOSS门户)导航到传入的URL,从而有效地刷新页面 在我们加入SSR的复杂

我在一个集成sharepoint、SQL reporting services和一系列使用ASP.NET MVC构建的自定义表单的应用程序中遇到了一些问题

假设我的服务器如下所示

  • 苔藓
  • SSR
  • 自定义表格
在MOSS中,我的门户有时需要弹出一个自定义表单来捕获用户输入。我已经通过使用jQuery对话框(使用Boxy)完成了这项工作,该对话框在中构建自定义表单,并将门户的url传递给它。自定义表单完成后,它会将父窗口(MOSS门户)导航到传入的URL,从而有效地刷新页面

在我们加入SSR的复杂性之前,这一切都很顺利

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

很抱歉,这篇文章篇幅太长,直截了当——这只是一个内部intranet应用程序。是否可以以某种方式允许跨域脚本编写,以便可以通过sharepoint portal中的javascript控制弹出对话框,并且SSR和我的自定义表单可以只调用父级上的javascript方法

最好我不想在客户端浏览器中进行配置以允许这种情况发生,因为我必须将这种更改应用到庄园内的所有机器上——这是一个很大的数字

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

干杯,
Tony

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

如果你被旧的浏览器卡住了,你几乎没有选择。最干净的方法是通过同一个代理发送相互通信所需的所有内容,尽管在OP的情况下,这似乎是不可能的

其次是使用Flash的跨域功能

另一个选项是,在可用的地方包装postMessage,在不可用的地方使用一些涉及cookies和轮询的巫毒


唯一的另一种选择是使用隐藏的iframe—将消息发送到页面,将iframe的位置更改为目标页面域上的位置,并在目标页面中进行轮询—但我再次认为,OP的代理使这一点不可行。

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

如果你被旧的浏览器卡住了,你几乎没有选择。最干净的方法是通过同一个代理发送相互通信所需的所有内容,尽管在OP的情况下,这似乎是不可能的

其次是使用Flash的跨域功能

另一个选项是,在可用的地方包装postMessage,在不可用的地方使用一些涉及cookies和轮询的巫毒


唯一的另一种选择是使用隐藏的iframe—将消息发送到页面,将iframe的位置更改为目标页面域上的位置,并在目标页面中进行轮询—但我再次认为,OP的代理使这一点不可行。

除了Andrew提供的选项之外,还有另一个选项。您可以动态地将脚本标记注入DOM,其中src属性可以指向任何域上的javascript文件

在jQuery中,您可以通过指定“jsonp”作为ajax请求的数据类型来实现这一点。您可以在此处阅读有关此方法的更多信息:


除了Andrew提供的选项之外,还有另一个选项。您可以动态地将脚本标记注入DOM,其中src属性可以指向任何域上的javascript文件

在jQuery中,您可以通过指定“jsonp”作为ajax请求的数据类型来实现这一点。您可以在此处阅读有关此方法的更多信息:


我终于按照建议使用了隐藏的iFrame来解决这些问题。我在我的博客上发布了一篇文章,提供了更多详细信息,并将代码推送到codeplex上:


我终于按照建议使用了隐藏的iFrame来解决这些问题。我在我的博客上发布了一篇文章,提供了更多详细信息,并将代码推送到codeplex上:


谢谢您提供的信息!糟糕的是,IE6目前已部署到整个业务中。有什么办法吗?谢谢你的回答。在本例中,我们将尝试实现IE8标准化,如果失败,将检查xssinterface。出于兴趣,这是否也适用于弹出窗口?IE:弹出窗口能够回拨到窗口中会很好。开启器…:)postMessage和Flash将在您可以控制通信两端的任何位置工作;我认为xssinterface的cookie方法也会起作用。Iframes非常脆弱。谢谢你的信息!糟糕的是,IE6目前已部署到整个业务中。有什么办法吗?谢谢你的回答。在本例中,我们将尝试实现IE8标准化,如果失败,将检查xssinterface。出于兴趣,这是否也适用于弹出窗口?IE:弹出窗口能够回拨到窗口中会很好。开启器…:)postMessage和Flash将在您可以控制通信两端的任何位置工作;我认为xssinterface的cookie方法也会起作用。iFrame非常脆弱。我发现了另一种选择——使用javascript中的document.domain将所有参与服务器设置为使用一个更高级别的域名,而不是它们运行时使用的域名。IE:在moss.myenvironment.com和app.myenvironment.com中,我输出javascript来设置document.domain=“myenvironment.com”,框架等可以相互通信。不过,使用SSRS报表查看器存在一些问题,我仍在努力解决。您好,我遇到了一些问题