Javascript 在intranet中启用跨域脚本
我在一个集成sharepoint、SQL reporting services和一系列使用ASP.NET MVC构建的自定义表单的应用程序中遇到了一些问题 假设我的服务器如下所示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的复杂
- 苔藓
- SSR
- 自定义表格
TonyIE8、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报表查看器存在一些问题,我仍在努力解决。您好,我遇到了一些问题