簡體   English   中英

跨服務器AJAX呼叫

[英]Cross Server AJAX Call

我發現了一些帖子可以解決其他問題,但不是我的情況。 我想為我的跨服務器ajax調用獲得最佳解決方案。

這是情況。 我有兩個網址,www.mysite.com和members.mysite.com。 第一個站點是wordpress驅動,第二個站點是codeigniter驅動的,我將這些站點稱為wordpress side和codeigniter side。 codeiginter端有一個事件的日歷頁面,作為一個模塊創建,所以任何頁面所要做的就是包含文件和所有的javascript和東西隨附。 在wordpress方面,我們必須將其中一個文件包含在一個頁面中,但問題是codeigniter端是ajax驅動的,所以當它執行ajax調用時,調用將是跨服務器的。 以下是我在網上看到的解決方案,在我的情況下有缺點:

  1. jsonp-這不支持POST數據。
  2. 簡單的服務器端代理http://devlog.info/2010/03/10/cross-domain-ajax/ - 由於javascript是在兩個網址之間共享的,我必須在wordpress端創建相同的文件codeigniter方面。 這意味着重復的代碼,性能問題,以及如果用戶在codeigniter端,請求必須進行額外的頁面調用以獲取數據。
  3. 符號鏈接 - 因為它們都位於同一台服務器上,是否可以在wordpress端建立符號鏈接? 我的codeigniter設置會被加載嗎? 我有一種感覺,這是行不通的。
  4. iFrame - 這是一個包含的模塊,所以它缺少所有的樣式和標題等等
  5. .htaccess文件 - 這是一個很長的鏡頭,但如果有一些方法可以讓.htaccess文件將調用重定向到另一個服務器而不知道ajax,它可能有用嗎?

在這一點上,我傾向於#2,因為這是唯一可行的解​​決方案。 你們還有其他解決方案嗎? 如果有一些方法可以將數據與jsonp一起傳遞,那將是理想的,但是所有站點都說不可能傳遞post數據,而codeigniter不喜歡查詢字符串......實際上,我可以啟用它,但那會可能在這一點上搞砸了一切。

UPDATE

所以我遵循了第一個海報的想法,它起作用了。 我在jQuery $ .ajax()發現了一個類似的解決方案,$ .post在Firefox中發送“OPTIONS”作為REQUEST_METHOD我現在擔心的是他們說有一些跨瀏覽器問題。 有什么想法嗎?

在codeigniter站點中設置HTTP標頭“Access-Control-Allow-Origin”可以解決您的問題嗎? apache站點配置文件中的類似內容可以解決問題:

    <Directory "/usr/lib/php-lib">
            Order allow,deny
            Allow from all
            Header set Access-Control-Allow-Origin "*"
    </Directory>

    #Instead of "*" you could restrict it to "www.mysite.com"

或者,您可以在頁面目錄中的.htaccess文件中設置此標頭

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM