2009-10-20 56 views
1

我在與集成的SharePoint,SQL報告服務和一堆正在使用ASP.NET MVC構建自定義表單應用程序中的一些問題。啓用交叉域名腳本在內部網

假設我的服務器如下;

  • MOSS
  • SSRS
  • 自定義窗體

在MOSS中,我的門戶網站需要在occassion彈出自定義表單來捕獲用戶輸入。我已經通過使用jQuery對話框(使用Boxy)完成了此操作,該對話框將自定義窗體內置爲內嵌框架,並將門戶網站的URL傳遞給它。自定義表單完成後,它會將父窗口(MOSS門戶)導航到傳入的URL,從而有效地刷新頁面。

這是工作的罰款,直到我們在SSRS的複雜扔。

現在在MOSS中,我有一份報告列出了一些數據,但SSRS報告查看器Web部分似乎是iframe它是報告內容,這意味着來自報告的超鏈接不會要求父級覆蓋相同的對話框(因爲它是跨域的),並且如果它要執行覆蓋本身,它將覆蓋iframe。

對不起,長的帖子,得到的一點 - 這只是一個內部的Intranet應用程序。是否有可能以某種方式允許跨域腳本,以便彈出對話框可以通過Sharepoint門戶和SSRS中的JavaScript進行控制,並且我的自定義窗體只需調用父級的JavaScript方法?

最好我不想要做客戶端瀏覽器配置爲允許這種情況發生,因爲我不得不推出這種變化了的莊園內的所有機器 - 這是一個顯著數。

由於提前,提供給任何人誰可以解決我的困境啤酒;)

乾杯, 託尼

+0

我發現了另一個選項,這一點 - 在JavaScript中使用document.domain的設置所有參與的服務器使用更高級別的域名稱與他們正在運行的名稱。 IE:在moss.myenvironment.com和app.myenvironment.com中,我輸出javascript來設置document.domain =「myenvironment.com」,並且框架等能夠相互通信。使用SSRS報表查看器雖然有問題,但我仍在努力解決。 – 2009-10-22 14:02:14

+0

你好,我遇到了與SharePoint中的SSRS類似的問題。我想知道你是否找到了解決這個問題的解決方案?謝謝! – Ehsan 2014-08-12 20:38:43

回答

4

IE8,火狐3,最近Opera和Safari /鉻支持的postMessage讓不同的合作頁面域搭腔:

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

如果你被卡住舊的瀏覽器,你有幾種選擇。最乾淨的是通過相同的代理髮送需要彼此溝通的所有內容,儘管在OP的情況下,看起來這是不可能的。

下一個乾淨的是使用Flash的跨域設施。

另一種選擇是xssinterface,它包裝的postMessage如果有的話,並使用一些巫術涉及餅乾和投票的地方是沒有的。

唯一的其他選擇是使用隱藏的iframe - 將消息發送到頁面,將iframe的位置更改爲目標頁面的域上的位置並輪詢目標頁面 - 但我認爲OP的情況下代理使這不可行。

+0

感謝您的信息!儘管如此 - IE6目前正在整個業務部署。任何方式來做到這一點? – 2009-10-20 09:46:01

+0

編輯添加更多選項 – 2009-10-20 11:15:17

+0

感謝您的回答。在這個例子中嘗試獲得IE8標準化,如果失敗,將檢出xssinterface。出於興趣,這將與彈出窗口一起工作嗎? IE瀏覽器:這將是一個良好的彈出窗口能夠調用回window.opener ..... :) – 2009-10-20 17:01:53

0

除了Andrew提供的選項外,還有另外一種選擇。您可以動態地將腳本標記插入到DOM中,其中src屬性可以指向任何域上的JavaScript文件。

在jQuery中,您通過將「jsonp」指定爲ajax請求的數據類型來實現此目的。你可以閱讀更多關於這種方法在這裏:

http://blog.ropardo.ro/2009/09/23/cross-domain-ajax-calls/