2010-04-07 28 views
1

如何知道ajax請求是相關的?Ajax&session ID

通常在HTTP-HTML請求中,cookie會存儲表示會話ID的md5散列。

我想補充一點,我的ajax調用是跨域的。

更新

實施例:

var data1 = 'asdf'; 
$.ajax({ 
    url: 'http://differentdomain.com/ajax', 
    data: 'data1=' + data1 
}); 

現在有了這個AJAX請求由許多客戶端(瀏覽器/計算機)製成。我想知道他們來自單個瀏覽器會話。我認爲使用會話ID可能是一個解決方案。

AJAX & session id有標準模式嗎?我在服務器端使用Java。

+0

你能澄清「起源」嗎?你的意思是不同的域名?如在跨域請求中一樣?或者只是在同一個域上的其他位置? – zombat 2010-04-07 02:48:36

+0

你能舉一個你想要做什麼的例子嗎? – 2010-04-07 02:48:55

+0

如果請求具有不同的來源,那麼您還需要將請求相互關聯嗎? – 2010-04-07 02:54:33

回答

2

AJAX請求是客戶端。使用IE的客戶端#1訪問您的站點並處理任何客戶端代碼,這是一個會話的所有部分。使用Safari的客戶端#2擊中您的站點並處理任何客戶端代碼,這是另一個會話的所有部分。

除非您生成會話ID,否則在JavaScript中本地不存在可用的會話ID。如果可以,爲了唯一性,最好從服務器端生成或獲取會話標識。如果沒有,您可以使用像this這樣的方法。

如果你使用PHP,你可以這樣做:如果您使用ASP.NET

var data1 = 'asdf'; 
var sessionId = '<?php echo session_id(); ?>'; 
$.ajax({ 
    url: 'http://differentdomain.com/ajax', 
    data: 'data1=' + data1 + '&sid=' + sessionId 
}); 

,你可以這樣做:

var data1 = 'asdf'; 
var sessionId = '<% =Session.SessionId %>'; 
$.ajax({ 
    url: 'http://differentdomain.com/ajax', 
    data: 'data1=' + data1 + '&sid=' + sessionId 
}); 

如果[一些Java的Web服務器(如Tomcat),你可以:

var data1 = 'asdf'; 
var sessionId = '<% session.getId() %>'; 
$.ajax({ 
    url: 'http://differentdomain.com/ajax', 
    data: 'data1=' + data1 + '&sid=' + sessionId 
}); 
+0

有關使用java做這件事的任何想法? – JavaRocky 2010-04-07 07:16:51

+0

Java將成爲您使用的語言,但您必須通過某種網絡平臺運行。也許你可以使用Tomcat(http://tomcat.apache.org/)? – 2010-04-08 14:22:30