【问题标题】:Can JavaScript read HTTP Session object?JavaScript 可以读取 HTTP Session 对象吗?
【发布时间】:2012-04-04 00:05:31
【问题描述】:

是否可以从 JavaScript 中读取像 httpRequest.getSession("attr_name") 这样的动态变量的值?

【问题讨论】:

  • 如果你有一个服务器方法可以将它返回给 ajax 调用,是的。
  • 您使用什么服务器端语言?如何跟踪会话?
  • 如果您的意思是客户端 JS:不。如果您的服务器机器上有一些 JS 环境,您可以将这些参数输入其中。我假设您的服务器语言是 Java?
  • 不,我的意思是客户端。我想从客户端的 HTTP Session 对象但从 javascript 动态获取属性值。我的服务器语言是 Java。

标签: javascript httpsession


【解决方案1】:

正如我在评论中所说,唯一的方法是某种 Ajax 调用并从服务器请求它。我不知道你用的是什么后端,下面是我在 Asp.net MVC 和 jQuery 中的做法。

(如果有轻微的语法错误,我很抱歉——不在编译器面前)

public class HomeController : Controller
{

    //abstract the session code away, don't let the evil javascript touch
    //it directly. Ideally this would all be in a seperate logic class or something.
    public string NameAttribute
    {
       get
       {
           return Session["attr_name"] as string ?? string.empty;
       }
    }
    [HttpGet]
    public string GetNameAttribute()
    {
        return NameAttribute;
    }
    public ActionResult Index()
    {
        return View();
    }
}



<script>
$(function(){
    $.get( 'home/GetNameAttribute', function( response ) {
        var name = response; //don't forget error checking, ommited
    });
});
</script>

或者,您可以随时将所需的值写到隐藏字段中,然后使用普通的 javascript 读取它们。

【讨论】:

    【解决方案2】:

    (对于 Javascript,我假设您是指浏览器中的客户端脚本。)

    不,这是不可能的。 Session 对象的内容永远不会离开服务器,因此客户端脚本无法直接读取 Session 数据。

    如果您想在浏览器中访问它,您必须从 Session 对象中读取数据并将其发送到响应中(例如在隐藏字段中),或者提供从 Session 对象读取数据的 Web 服务Session对象并返回给浏览器。

    【讨论】:

      猜你喜欢
      • 2015-07-17
      • 2010-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-01
      • 1970-01-01
      相关资源
      最近更新 更多