2012-11-01 180 views
1

我正在嘗試使用ajax呼叫登錄到我的WordPress網站,這是我在previous question中詢問的。它不應該回應任何迴應。但是,每當我稱這個AJAX函數,Firefox(螢火蟲)顯示紅色200 OK。這必須是跨域問題。嘗試太多的東西,但沒有運氣到目前爲止。這裏是代碼:AJAX呼叫跨域問題

$.ajax({ 
     type: "POST", 
     url: "http://path-to-wordpress/wp-login.php", 
     data:myData 
     success: function(data){ 

     }, 
     error: function (xhr, ajaxOptions, thrownError) { 

     } 
}); 

任何建議將不勝感激。

+1

你是從兩個不同的域名嘗試? –

+0

如果你想登錄到你的worldpress託管在另一臺服務器上,我可以建議你另一種方法,而不是通過ajax –

+0

可能的重複[繞過同源策略的方式](http://stackoverflow.com/questions/3076414 /繞過同一原產地策略) – Quentin

回答

2

我假設你的JS代碼是abc.com和你的WordPress網站dev.abc.com

要解決跨域問題,只是將下面的代碼添加到.htaccess文件到你的WordPress網站(dev.abc.com

SetEnvIf Origin "^http(s)?://(.+\.)?(abc\.com)$" origin_is=$0 
Header always set Access-Control-Allow-Origin %{origin_is}e env=origin_is 

只是一個合適的站點名稱替換(abc\.com)。例如:(google\.com)(yahoo\.com)

+0

實際上,Zend應用程序位於dev.abc.com上,wordpress位於abc.com上。我知道它很奇怪,但是wordpress是由另一家公司爲這個客戶建立和安裝的,現在我有了這個項目。 –

+0

你能把這段代碼添加到WordPress的網站嗎? –

+0

是的:)我有權訪問代碼。 –

0

您需要在wp-login.php頁面添加CORS headers

Here's how to do it

但考慮到頁面的性質,要格外小心:不允許所有的起源(*),但只有你的網站。如果您允許所有用戶,您的用戶可能會盜用他們的登錄信息。

1

設置數據類型爲JSONP,在你的Ajax調用,它會工作跨域

做參考OT Ajax調用訪問jQuery Ajax

+0

我不指望y來自服務器的響應。 –

1

有一個名爲crossDomain的屬性$ .ajax。請將其設置爲true。