`
jbf034
  • 浏览: 152289 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

cookies、params、request、session

阅读更多
1、cookies
cookies对象封装了客户端的Cookie信息
cookies[:name] = “chengang”
cookies[:current_time] = Time.now.to_s
cookies[:key1] = {:value=>”four”, :expires=>10.days.from_now}
:expires设置cookies到期时间,从现在起10天后到期

2、params
  它是一个哈希结构的对象,用于封装传递到Action方法的参数,可以用params[:id]或params['id']取值

3、request
request.get?.to_s 得到一个布尔字符true或false。判断是否是一个get请求
request.post?.to_s 是否是一个post 请示
request.host()返回主机地址
request.protocol 返回协议类型,如http://
request.env["REQUEST_URL"]返回访问的url,如:http://localhost:3000/site/index/1
request.env["HTTP_ACCEPT_LANGUAGE"]返回示例:zh-cn

4、session
  (1)当若干个用户访问运行在服务哭上的网站,当每个用户首次与web服务哭建立连接时,他就与这个服务器建立了一个session,同时为用户分配一个session ID,用以标识用户唯一身份,同时在以cookies方式将session ID保存在用户浏览器上,
  (2)与cookies不同,Session允许出现多种数据结构的信息,如对象,
  (3)web服务器接收到用户请求后,查找用户session ID,如没有,则新建一个session ID,同时将它保存在用户浏览器上,然后,ROR根据session id找到保存在服务器上的session数据,对过session对象实现对session的各种操作,
  (4)session对存储内容的限制
      session对象,不能存储I/O对象,因为在存储对象时,session对象会自动调用ruby语言中的marshal函数对对象序列化操作。
      session存储model对象时,必须在所有用到该model类对象的controller类中使用model声明加以声明。如果较多controller类都用到了同一个model类对象,可以直接在app/controllers目录的全局controller类定义文件application_controller.rb中进行声明,
      不要在session对象中存储大量的数据。
      不要在session对象中存储易失性数据。
随着用户状态的变化,session存储的数据也会出现非周期性的变化,这就有可能导致session对象中所存的数据出现不一至的情况,关于数据不一至的处理有三种(略)
    (5)session对象中的预设参数项
:database_manager  指定session对象中的数据以何种方式保存在服务器端
:session_id 指定一个Session ID,若不指定,ROR会自动创建一个Session ID
:session_key 其值对应于COOKIE中的session ID
: session_path 用于指定对应的Session的有效范围,默认值为/,即在当前域内都有效
:session_secure 接受布尔型值,为true时表示对应的Session只能用于 http协议,默认为false
在controller类文件中使用代码ActionController::Base.session_option[option]=value或session_option()方法就可以实现对session对象预设参数项的设定,其中option表示参数项的名称,value表示准备设定的值
    
    (6)  session的存储
1、PStore 方式
   默认的存储方式,方法为
ActionController::Base.session_option[:database_manager]=CGI::Session::Pstore或
session_store=:PStore.
在pStore方式下Session数据保存在一个特定格式的文件中,所谓特定格式是指序列化后的数据

2、Active Record Store方式
方法为session_store=:active_record_store
在active Record Store方式下,Session中的数据保存到数据库中,为此需在后台数据库中建立一张数据表,

3、DRb Store方式
方法为: session_store=:drb_store
分布式存储session对象,指将session对象存储在一个DRb服务器上,它与web服务器相对独立,

(7)Session的到期处理
1,reset_session()方法直接删除那些不再需要Session信息(如用户登出)
2,针对不同的session存储方式,采用不同的到期处理方式

例:if Time.now-session[:created_time]>3600
  session[:current_session]=false
   end
分享到:
评论

相关推荐

    asp.net实现遍历Request的信息操作示例

    context.Response.Write("<li>" + context.Request.Cookies.Keys[i].ToString() + " = " + context.Request.Cookies[context.Request.Cookies.Keys[i].ToString()].Value); } // 设置返回内容类型为HTML ...

    python request代码教程

    `requests.Session`对象可以在多个请求间保持某些参数,如cookies: ```python s = requests.Session() s.get('http://example.com/login') s.post('http://example.com/login', data={'username': 'user', '...

    看完这个系列所有爬虫都easy!(一)爬虫介绍与request库使用

    此外,request库还提供了处理cookies、session等功能,以便处理登录状态和持久化会话。 学习并熟练掌握request库的使用,是进行Python爬虫开发的基础,能帮助我们更高效地获取和解析网页数据。通过这个系列的学习,...

    React如何解决fetch跨域请求时session失效问题

    然而,当需要在请求中携带用户session(即Cookie)时,fetch默认不会发送cookies,因此需要设置`credentials: 'include'`。这样,fetch会在请求中包含浏览器的cookies,从而保持用户认证状态。 示例代码如下: ```...

    Python request使用方法及问题总结

    session = requests.Session() # 设置Headers headers = {'User-Agent': 'Mozilla/5.0'} # 设置登录参数 login_data = {'username': 'your_username', 'password': 'your_password'} # 发送登录请求并获取Cookies ...

    页面会话及传值的异同

    - `string userName = Request.Cookies["UserName"].Value;` - **PHP**: - **设置Cookie**: - `setcookie("UserName", "John Doe", time()+3600);` - **获取Cookie值**: - `$userName = $_COOKIE["UserName...

    ASP.NET内置对象

    - `Request.Params`:获取所有请求参数,包括Form和QueryString。 3. **Server对象**:提供访问服务器的方法和属性,如转换URL、执行服务器端脚本等。 4. **Application对象**:用于在整个网站范围内共享数据,...

    asp.net系统对象与状态保持

    可以通过`Response.Cookies`来设置Cookie,通过`Request.Cookies`来读取Cookie。 - 设置方法示例: ```csharp Response.Cookies["CookieName"].Value = "Value"; ``` - 读取方法示例: ```csharp string ...

    java-httputil.rar

    在处理HTTP请求时,我们还需要考虑一些其他方面,如处理cookies、管理session、处理重定向、处理异常、设置超时等。同时,对于安全性,我们需要关注HTTPS连接、证书验证和安全的编码实践,以防止SQL注入和跨站脚本...

    ASP.NET传值方法详解

    string name = Request.Cookies["name"].Value; ``` **注意点:** - Cookie有大小限制(通常不超过4KB)。 - 安全性较低,容易被拦截和篡改。 #### 四、使用Session变量 **Session**变量存储在服务器端,用于保存...

    asp_net常用函数

    - `Request.Params`:获取查询字符串和表单数据的混合集合。 3. **Session对象**: - `Session["key"] = value;`:存储用户会话数据,以便在不同页面之间共享。 - `value = Session["key"];`:读取存储在会话中...

    Node Express 3.0 API 参考手册

    Request req.params req.query req.body req.files req.param() req.route req.cookies req.signedCookies req.get() req.accepts() req.accepted req.is() req.ip req.ips req.path req.host req.fresh req.stale ...

    不可或缺的ASP.NET内置对象小结

    除了Request和Response,还有其他内置对象如Session、Cookie、Application和Server,它们分别用于管理会话状态、创建持久化的客户端数据、共享应用程序级数据以及执行服务器端的实用操作。 学习和理解这些ASP.NET...

    ASP.NET页面传递值的方式介绍

    string transferredValue = Request.Params["key"]; ``` 综上所述,不同的页面传递值方式各有优缺点,选择哪种方式取决于具体需求,如数据类型、安全性、持久性和性能等因素。在实际开发中,应根据项目需求灵活运用...

    如何基于Python + requests实现发送HTTP请求

    在处理多个请求时,`requests.Session`对象可以保持某些参数(如cookies)在多个请求之间。这在处理登录状态或保持会话信息时特别有用。以下是如何使用`Session`的例子: ```python import requests session = ...

    python requests 包

    - `cookies`:服务器返回的 Cookie 信息。 例如,检查状态码并打印响应内容: ```python if response.status_code == 200: print(response.text) ``` ### 5. 文件上传与下载 使用 `requests` 进行文件上传,...

    python教程httpx详解

    cookies = httpx.Cookies({'sessionid': 'abcdefg'}) response = httpx.get('https://www.example.com', cookies=cookies) ``` 总的来说,Httpx是一个全面的HTTP客户端库,它提供了丰富的功能,如异步支持、HTTP/2...

    requests 安装包

    - **会话管理**:`Session` 类可以保持会话期间的某些状态(如 cookies),提高性能和一致性。 2. **setuptools 模块** - **作用**:setuptools 是 Python 中的一个包管理工具,用于构建、发布和安装 Python 包。...

    requests-2.11.0

    9. **会话管理**:`Session`对象允许你在多次请求之间保持某些参数,比如cookies,这对于处理登录状态和保持会话非常有用。 10. **文件上传**:在POST请求中,可以使用`files`参数来上传文件,例如`requests.post...

Global site tag (gtag.js) - Google Analytics