`
qiezi
  • 浏览: 497908 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

[ROR] 修复“使用POST方法时,通过URL参数改写_session_id无效”的问题

    博客分类:
  • Ruby
阅读更多
问题:

使用Flash 8提供的FileReference可以方便地一次选择多个文件上传,不过除了在IE上以外,其它浏览器上的都会出现Cookie与浏览器不一致的问题。

解决办法: 直接的做法就是在上传时,附加一个session_id在URL上,在服务端处理时使用这个Session。

在Rails中,可以把_session_id=xxxx附加在URL上。不过测试的结果是,附加的session_id只有在GET请求时才正常,POST请示时会被忽略。

知道了这一点,只需要寻找GET和POST请求处理的差别。也费了一番周折,才发现问题出在actionpack/lib/action_controller/cgi_ext/raw_post_data_fix.rb里。

只需要在POST时也处理一下URL参数即可。由于它是通过read_query_params方法来分开处理的,所以要在POST请求时,调用一下read_query_params(:get),并把结果合并。代码如下:

@params.merge!(CGI.parse(read_query_params(:get))) if method == :post || method == :put

这行加到initialize_query方法尾部即可。由于原来的方法可能返回了@params,所以也加一行@params在结尾,以免造成不必要的麻烦。
分享到:
评论

相关推荐

    RoR性能优化经验谈

    在本文中,我们将探讨一些RoR性能优化的关键方面,主要基于JavaEye网站在使用RoR过程中积累的实际经验。 首先,RoR性能优化涉及到多个层面,包括应用程序的部署、服务器配置以及代码优化。在部署方面,操作系统的...

    ror中文资料

    3. **方法和块**:Ruby中的方法定义简单,可以接受参数,并通过return语句返回值。块是Ruby的一个重要特性,类似于匿名函数,可以用在循环、筛选、映射等操作中。 4. **对象和类**:Ruby是纯面向对象的语言,每个值...

    ROR 文件的上传与下载

    在Ruby on Rails(简称ROR)框架下,处理文件的上传与下载是一项常见的需求,尤其是在构建包含媒体内容的应用程序时。本文将基于给定的文件信息,详细阐述如何在Rails应用中实现文件的上传与下载功能,包括数据库...

    ror实例

    "ror实例"可能指的是在学习或实践中,通过创建一个具体的Rails应用程序来理解和掌握RoR的工作原理和最佳实践。 在Ruby on Rails中,重要知识点包括: 1. **Gemfile与Gemfile.lock**:项目中的Gemfile用于指定项目...

    RoR选题方向—源代码

    1. **路由(Routing)**:RoR的路由系统将URL映射到控制器的行动上,通过`config/routes.rb`文件进行配置。理解路由规则有助于构建可扩展和灵活的Web应用。 2. **控制器(Controllers)**:控制器负责处理请求,...

    初探ROR

    3. RESTful设计:Rails鼓励使用REST(Representational State Transfer)设计原则,使得URL更加语义化,资源操作更直观。 4. 自动路由:Rails的路由系统可以根据定义的资源自动创建控制器和动作。 5. scaffolding:...

    ror

    NULL 博文链接:https://xuxiangpan888.iteye.com/blog/266696

    ROR安装必备所有架包

    它还负责将URL映射到控制器方法,是构建Web应用程序的基石。 接着,`activerecord`是Rails中的ORM(对象关系映射)库,使得开发者可以使用Ruby语言操作数据库。`activerecord-1.15.5.gem`包含了与数据库交互所需的...

    ror培训第2天 object1

    在`initialize`方法中,我们可以使用这些参数来设定实例变量的初始值,如`@cust_id=id`,`@cust_name=name`,`@cust_addr=addr`。 5. **示例代码** - 如创建`Customer`类的两个对象`cust1`和`cust2`,并分别初始化...

    神经网络ror resenet模型

    **神经网络Ror ResNet模型详解** 在深度学习领域,ResNet(残差网络)模型是具有里程碑意义的创新,由He et al.在2015年提出。该模型解决了深度神经网络训练中的梯度消失问题,允许构建非常深的网络结构。而“Ror”...

    從 PL/SQL 中調用 ROR 创建的 Web 服务

    你可以使用这个模块发送 GET 或 POST 请求到 ROR API,并接收响应。 - `UTL_HTTP.SET_WIRE_DEBUG(TRUE)` 可以开启调试,查看发送和接收的 HTTP 报文。 - `UTL_HTTP.BEGIN_REQUEST` 初始化一个 HTTP 请求,指定 ...

    Windows 上搭建 ROR环境

    ### Windows上搭建Ruby on Rails(ROR)环境详解 #### 一、引言 随着Web开发技术的不断发展,Ruby on Rails(简称Rails或ROR)作为一种高效、简洁且优雅的Web开发框架,受到了广大开发者的青睐。然而,在Windows...

    ROR绿色最新环境(2013/3/10)

    ROR环境 Ruby version 1.9.3 (java) RubyGems version 1.8.24 Rack version 1.4 Rails version 3.2.12 JavaScript Runtime therubyrhino (Rhino) Active Record version 3.2.12 Action Pack version 3.2.12 ...

    使用ROR编写ORACLE WEB应用

    标题“使用ROR编写ORACLE WEB应用”表明我们要探讨的是如何使用Ruby on Rails(简称ROR)框架来构建与Oracle数据库交互的Web应用程序。Ruby on Rails是一个基于Ruby语言的开源Web开发框架,它遵循MVC(Model-View-...

    ror系列

    书中详细介绍了方法定义、参数处理、默认参数值、rest参数(*args)以及块的使用。 6. **块、Proc和Lambdas**:Ruby的块是代码的匿名封装,Proc和Lambda是块的两种可存储形式。书中深入讨论了这三者的区别和用法。 ...

    RoR 培训课程PPT

    - **路由规则**:介绍Rails的路由系统,学习如何定义URL到控制器方法的映射规则。 - **RESTful设计**:解释RESTful架构原则,展示如何在Rails应用中实现RESTful风格的API接口。 - **第五天**:邮件发送、插件使用...

    机遇ROR 的图书管理系统

    《机遇ROR的图书管理系统》是一份以Ruby on Rails(简称ROR)技术为核心,旨在构建高效、便捷的图书管理解决方案的学习资料。Ruby on Rails,是基于Ruby编程语言的开源Web应用框架,它遵循MVC(Model-View-...

    RoRBlog 基于RoR的博客系统

    基于RoR的博客系统,代码风格简单清晰,前后太完善,适合初学者。

    3-从函数到方法(2)1

    通过在函数定义前添加`def`关键字和`self`参数,将其转变为类的方法。例如: ```python class MyClass: def my_method(self): print("This is a method.") ``` 2. **算数运算符**: Python提供了用于算术操作...

Global site tag (gtag.js) - Google Analytics