gpt4 book ai didi

ruby-on-rails - Ruby on Rails 3 表单中的 _snowman 参数有什么用?

转载 作者:行者123 更新时间:2023-12-03 04:16:14 26 4
gpt4 key购买 nike

在 Ruby on Rails 3(当前使用 Beta 4)中,我发现在使用 form_tagform_for 帮助程序时,有一个名为 _snowman< 的隐藏字段 的值显示为 ☃ ( Unicode\x9731)。

那么,这是做什么用的?

最佳答案

将此参数添加到表单中是为了强制 Internet Explorer(5、6、78)将其参数编码为 un​​icode。

具体来说,如果用户将浏览器的编码切换为 Latin-1,则可能会触发此错误。要了解为什么用户会决定做一些看起来如此疯狂的事情,请查看 this google search 。用户将网站设置为 Latin-1 模式后,如果他们使用可同时被理解为 Latin-1 和 Unicode 的字符(例如,名称中常见的 é 或 ç),Internet Explorer 会将其编码为拉丁语-1。

这意味着,如果用户搜索“Ché Guevara”,服务器端将无法正确搜索。在 Ruby 1.9 中,当文本不可避免地进入正则表达式引擎时,这将导致编码错误。在 Ruby 1.8 中,这会导致用户得到错误的结果。

通过创建一个只能被 IE 理解为 unicode 字符的参数,我们强制 IE 查看accept-charset 属性,然后该属性告诉它将所有字符编码为 UTF-8,即使是那些可以用 Latin-1 编码。

请记住,在 Ruby 1.8 中,将 Latin-1 数据放入 UTF-8 数据库中是非常简单的(因为整个堆栈中没有检查用户发送的字节是否正确)任何点都是有效的 UTF-8 字符)。因此,Ruby 应用程序(以及 PHP 应用程序等)出现这种面向用户的错误是非常常见的,因此用户尝试更改编码作为姑息措施也是非常常见的。

总而言之,当我编写此补丁时,我没有意识到参数的名称会出现在面向用户的位置(它出现在使用 GET 操作的表单中,例如搜索表单)。既然如此,我们将这个参数重命名为 _e,并使用一个看起来更无害的 unicode 字符。

关于ruby-on-rails - Ruby on Rails 3 表单中的 _snowman 参数有什么用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3222013/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com