阿贾克斯&会话ID

时间:2010-04-07 02:36:59

标签: java jquery ajax

您如何知道ajax请求是否相关?

通常,对于HTTP-HTML请求,cookie将存储表示会话ID的md5哈希。

我想补充一下,我的ajax调用是跨域的。

已更新

示例:

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

现在有许多客户端(浏览器/计算机)发出这个ajax请求。我想知道它们来自一个浏览器会话。我认为使用会话ID可能是一个解决方案。

AJAX&是否有标准模式?会议ID?我在服务器端使用Java。

2 个答案:

答案 0 :(得分:2)

AJAX请求是客户端的。使用IE的客户端#1访问您的站点并处理任何客户端代码,这是一个会话的所有部分。使用Safari的客户端#2访问您的站点并处理任何客户端代码,这是另一个会话的所有部分。

除非您生成会话ID,否则javascript中本身没有可用的。如果可以,为了唯一性,最好从服务器端生成或获取会话ID。如果没有,您可以使用this等方法。

如果你使用PHP,你可以这样做:

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

如果您使用的是ASP.NET,则可以执行以下操作:

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
}); 

答案 1 :(得分:0)

我通过使用UUID.randomUUID()解决了我的问题,并检查它是否已在我的数据库中使用过。然后使用UUID作为会话ID。

http://java.sun.com/j2se/1.5.0/docs/api/java/util/UUID.html