你不能使用ajax來請求跨域uri。您必須實現您自己的服務器端代理,該代理將處理遠程認證服務器的請求/響應。它可以複製/粘貼響應,但必須與客戶端位於同一個域中。
餅乾同樣的事情,他們有他們可以讀/寫的域。
您將被授權只請求此代理。它也可以處理cookie創建過程,然後將cookie ID返回給客戶端。
對於(一個很簡單的)例子,在www.auth.com,你有這樣的web服務:
url : www.auth.com/auth
@params : string uuid, string password
@returns : int shiroSessionId // yes it's more complicated, but KISS for the example
您應該創建,在www.mydomain.com/myAuth其wget的WWW的一類。使用相同的參數auth.com/auth服務,創造本地會話cookie
url : /myAuth
@params : string uuid, string password
@returns : int cookieId, -1 if login failed
最後在www.mydomain.com/login.html,您將有以下JS調用(這裏的jQuery):
$.ajax(function() {
url : '/myAuth',
date : {uuid: inputUuid, password: inputPassword}, // provided by a form
success(cookieId) {
if(cookieId > 0) {
alert('logged with cookie '+getCookie(cookieId));
} else {
alert('login failed');
}
}
});
希望它有幫助。
Regards
他可能使用jsonp。 – ThatGuy 2012-01-16 23:31:25
我在服務器端使用Allow-Origin標頭,以允許來自我的應用程序的跨域ajax請求。該應用程序將與手機差距打包並部署到移動設備上。因此,不會有任何服務器爲應用程序提供服務,它只會在移動設備上運行。由於PhoneGap只是將它打包爲在瀏覽器包裝中運行,因此跨域可能仍然適用 – rycfung 2012-01-17 05:05:55
只要您的標頭Access-Control-Allow-Origin不是「*」,也可以使用。 – vaugham 2012-01-17 08:53:07