2011-11-23 51 views
0

我有一些內部網腳本我想跨域。我使用jQuery 1.7並試圖衡量我的選擇。我知道有3個選項。稱重跨域Javascript選項

  1. JSONP
  2. web服務器上的頭
  3. 設置訪問控制允許來源編寫代理頁面

隨着JSONP我限於GET請求。我有一些我想發佈的大數據,並且對於URL長度限制是不可行的。

在服務器上設置Access-Control-Allow-Origin有助於jQuery在執行之前執行的任何預檢請求。但是我受到Chrome和IE6等瀏覽器限制的束縛。我在Chrome 15上,從本地主機到任何其他域立即拋出。我已經閱讀了IE7 +原生XmlHttpReq圖表,我認爲這將是一個很好的解決方案,因爲我只是從Intranet轉到Intranet,但是我想不是甚至是最新的Chrome。

編寫一個代理頁面可以工作,但我認爲這可能是前期工作太多。我在.NET WCF Web服務之間跳躍,並且有足夠的擔心封裝SOAP請求和設置內容類型。

那麼你有什麼想法?我是否缺少在Chrome中使用此項工作的考慮事項?我可以忽略比IE7更少的東西。或者我應該只使用頁面代理方法?

回答

2

在訂單,我會使用它們:

PROXY

要絕對確保你得到你想要的東西,去代理。對於小規模的東西,您可以在.htaccess中將所有URL(提供您正在使用的Apache)重寫爲外部主機。工作得很好,但調試可能有點困難,所以你最好準備好讀取目標服務器上的日誌文件,因爲如果出現錯誤(如500或類似的),你會得到一個代理錯誤(通常爲502),而不是在瀏覽器。唯一不利的一面是,它需要一個體面的服務器,如果負載變得太大,但是簡單地將Apache切換到Ngnix會給你一個很大的提升,所以不要害怕使用它。

訪問控制允許來源

一個偉大的事情,但不支持IE8 <,歌劇院(做這個工作雖然)和其他一些老的瀏覽器。如果某些瀏覽器支持不需要,請參閱此。 A fun article採用CORS

JSONP

如果您不能負擔由代理所產生的額外的服務器負載,你也許可以解決的POST的限制,打破了請求分成幾部分,並分別發送給他們,但更比簡單的代理更麻煩。除此之外,工作很好。

0

至少有一個選項 - eaxyXDM。它是專門爲實現跨域javascript通信而設計的框架。