【问题标题】:Ajax & session idsAjax 和会话 ID
【发布时间】:2010-04-07 02:36:58
【问题描述】:

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

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

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

更新

例子:

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

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

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

【问题讨论】:

  • 你能澄清“起源”吗?你的意思是不同的域?如,跨域请求?还是只是同一个域上的不同位置?
  • 你能举个例子说明你正在尝试做什么吗?
  • 如果请求有不同的来源,您还需要如何将请求相互关联?
  • @Bryon:如何区分计算机 1 和计算机 2 发出的 ajax 请求?
  • 您是否在使用任何类型的服务器端技术,例如 ASP.NET 或 PHP?

标签: java jquery ajax


【解决方案1】:

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

除非您生成会话 ID,否则您无法在 javascript 中使用本机 ID。如果可以,为了唯一性,最好从服务器端生成或获取会话 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
}); 

【讨论】:

  • 有没有用 java 做这个的想法?
  • Java 将是您将使用的语言,但您必须通过某种网络平台运行。也许你可以使用 Tomcat (tomcat.apache.org)?
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 2010-12-17
    • 2020-07-11
    • 2014-07-13
    • 2012-09-27
    • 1970-01-01
    • 2012-06-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多