set_form_data POST 中的转义参数

2024-01-01

这是最奇怪的事情。当我添加; in set_form_data, value被解释为value;在服务器端。当我删除;,“dontescape”的值被解释为file%3a%2f%2f%2fpath%2fto。到底发生了什么?我不希望任何东西被转义,除非我明确地调用 CGI::escape!请帮忙 :)

postParams = {
  'key1' => 'value',
  'dontescape' => 'file:///path/to'
}

url = URI.parse('https://my.url')

req = Net::HTTP::Post.new(url.path)
req.basic_auth('username', 'password')

req.set_form_data(postParams, ';')

sock = Net::HTTP.new(url.host, 443)
sock.use_ssl = true
sock.ssl_version = 'SSLv3'
sock.start do |http|
response = http.request(req) do
  return response.body
end

发生这种情况是不好的:PHP、Java、Node —— 它们都不会这样做。
首先,我重写:

# Module to override
module Net
    module HTTPHeader   
        def postUrlBuilder(postParams)
            @queryUrl = ''
            if (postParams.nil? or postParams == 0)
                # Null or empty item
            else
                count = 0
                postParams.each_pair do |key,value|
                    if (count == 0)
                        @queryUrl = @queryUrl + key + '=' + value
                        count = count + 1
                    else 
                        @queryUrl = @queryUrl + '&' + key + '=' + value
                    end
                end
            end
            return @queryUrl
        end

        def set_form_data(postParams, sep = '&')
            self.body = postUrlBuilder(postParams)
            self.content_type = 'application/x-www-form-urlencoded'
        end
        alias form_data= set_form_data
   end
end

然后我写了自己的post方法:

def monkey_patch_post_request(postParams)
        url = URI.parse(@monkeyPatchUrl)    
        req = Net::HTTP::Post.new(url.path)
        req.basic_auth @companyId, @apiKey
        req.set_form_data(postParams, sep = '&')
        sock = Net::HTTP.new(url.host, 443)
        sock.use_ssl = true
        sock.ssl_version='SSLv3'
        sock.start do |http|
            response = http.request(req)
            return response.body
        end
    end

这应该有帮助!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

set_form_data POST 中的转义参数 的相关文章

  • 在 Android 中从互联网链接获取数据

    我正在制作一个带有 URL 的应用程序 asp 扩展名 我们向其传递所需的参数并使用 POST 方法获取一些字符串结果 关于如何实现这一目标有什么建议吗 UPDATED 实际上我有一个 net 链接 它接受一些 POST 参数并给我一个结果
  • 为什么 Ruby 中两个用空格分隔的字符串连接在一起?

    为什么这在 Ruby 中有效 foo bar gt foobar 我不确定为什么要连接字符串而不是给出语法错误 我很好奇这是否是预期的行为 以及解析器是否负责争论 没有运算符的两个字符串被视为单个字符串 或者语言定义本身指定了这种行为 隐式
  • 无法在 Windows 7 上安装 Rmagick 和 Imagemagick

    当我跑步时gem install rmagick 2 13 1 gem从 rmagick 2 13 1 gem 所在的目录中 我收到一个错误 指出它无法构建 gem 本机扩展 下面显示 c Ruby192 bin ruby exe extc
  • Ruby 解释器嵌入到 C 代码中

    我只是尝试书中的一个简单例子 我有一个 sum rb 文件 class Summer def sum max raise Invalid maximum max if max lt 0 max max max 2 end end 还有一个
  • 安装 RVM 时出现问题

    我已按照 rvm 网站上的说明执行了命令 但似乎不起作用 从 git 存储库获取代码运行顺利 但是当我尝试使用时 rvm notes Error usr local bin rvm line 73 home cody rvm scripts
  • 分割 Ruby 字符串时如何保留分隔符?

    我有这样的文字 content Do you like to code How I love to code I m always coding 我试图将其拆分为 or or content split 当我打印结果时 标点符号分隔符丢失
  • ExecJS::Runtime在 Rails 4.1.4 中不可用

    UPDATE 现在一切正常了 谢谢deep https stackoverflow com users 2300000 deep 我安装了 node js 然后得到了一个 TZInfo DataSourceNotFound 错误 通过添加解
  • 在 Rspec 中测试 STDOUT 输出

    我正在尝试为这个声明建立一个规范 使用 看跌期权 很容易 print file doesn t exist Create Empty File y n RSpec 3 0 RSpec 3 0添加了一个新的output matcher htt
  • 为什么机架响应主体是数组而不是字符串?

    他们的文档中的一个经典的 hello world 示例 class HelloWorld def call env return 200 Hello world end end 我的问题是为什么第三个值是 Hello world 而不是 H
  • Rails:控制文件存储缓存大小

    Rails 中基于文件的缓存的文档说 请注意 缓存将不断增长 直到磁盘已满 除非您 定期清除旧条目 不幸的是 它没有提供任何有关如何定期清除旧条目的信息 是否设置合适的值 expires in完成这项工作还是清除缓存背后还有其他某种黑魔法
  • Rails3-jquery-autocomplete 如果没有可用数据则清除字段

    我正在使用rails3 jquery autocomplete 如果自动完成没有返回结果 是否可以清除自动完成字段的值 我试图阻止用户提交数据库中没有的值 我使用的是旧版本 但我实现了change处理程序autocomplete call
  • 发送通过 HTTParty 发送的 post 查询

    我正在使用 Buffer App API 和 HTTParty 来尝试通过 更新 创建 http www bufferapp com developers api updates updatescreate方法 但 API 似乎忽略了我的
  • Rails 模型中的 class_nameforeign_key

    我最近遇到了这段代码 用户有很多答案 class name 和 foreign key 的目的是什么 class Answer lt ApplicationRecord belongs to user class name gt Quest
  • Ruby 数组到 Javascript 数组

    我有一个带有帐户 ID 的 Ruby 数组 我想将帐户 ID 的 Ruby 数组存储在 Javascript 数组中 我想知道最好的方法是什么 另外 当我尝试执行此操作时 Javascript 似乎认为如果只输入一个帐户 ID 则该 ID
  • 如何获取水豚中隐藏元素的值?

    我需要获取隐藏元素的值 我尝试了以下代码 page find xpath span id sample text 它返回零 您可以简单地找到隐藏元素并获取它的值 find sample visible false value 很简单
  • 使用 RSpec 测试控制器时模拟 CanCan 授权

    这是我要测试的控制器 class UsersController lt ApplicationController load and authorize resource def index users User all respond t
  • 使用 authlogic_api 进行 Rails REST API 访问

    我正在为 Steam 游戏编写 Rails 后端 API 该游戏只能通过 REST 调用访问 因此不需要特定于用户的身份验证 我正在努力实施authlogic api 插件 http github com phurni authlogic
  • Ruby && 和 = 运算符的误解

    您认为 Ruby 中的下一个表达式的结果会是什么 a 10 b 25 尝试在 ming 中计算然后使用irb 所以 如果我们看一下 Ruby 文档运算符优先级 https ruby doc org core 2 2 0 doc syntax
  • ajax 请求后无法显示 twitter bootstrap 模式

    我想在单击链接时显示模式窗口 但也想执行 ajax 请求来获取需要在模式窗口上显示的对象 我收到了需要在模态窗口上显示的内容的响应 但它没有弹出 因为模态窗口可能是脚本没有被执行 Code 主页 div div JavaScript 代码
  • 在heroku cedar上安装GEOS

    我们在 heroku cedar stack 上安装 GEOS 库时遇到了麻烦 我们遵循了这个指南 https devcenter spacialdb com Heroku html https devcenter spacialdb co

随机推荐

  • 如何在reactJS中自定义reactstrap下拉菜单

    使用 ReactJS 创建示例应用程序并为 boostrap 安装 Reactstrap 我在工作正常的应用程序中使用下拉组件 代码是
  • 在 Erlang 中解析 JSON

    我有一段 JSON 字符串 我想在 Erlang 中解析它 看起来像 id1 str1 str2 str3 id2 str4 str5 我查看了 mochijson2 和其他几个 JSON 解析器 但我真的不知道该怎么做 非常感谢任何帮助
  • Jasmine 单元测试中模拟 AngularJS 模块依赖关系

    我试图在将其他模块作为依赖项的模块内对控制器代码进行单元测试 但无法弄清楚如何正确模拟它们 我正在使用 Jasmine 框架并使用 Karma Testaulous 运行我的测试 模块代码 var app angular module ev
  • 如何检查 DNS 服务器是否设置为“自动获取”

    当我使用网卡设置的 DNSServerSearchOrder 属性获取服务器 DNS 设置时 它会返回自动解析到的 DNS 服务器 而不是指示其动态的值 例如 null 例如 要将我的 DNS 服务器设置为 自动获取 我会执行以下操作 Ma
  • 如何在 C++ 中使用 setenv() 导出变量?

    我需要导出几个变量 使它们在命令行中如下所示 export ROS HOSTNAME xxx 如何在 C 中使用 setenv 来实现这一目标 Thanks 来自setenv 手动输入 SYNOPSIS include
  • Javascript - 获取任何键盘布局的按键描述

    For a rich web application I need keyboard shortcuts Because there are many different keyboard layouts they have to be c
  • 识别给定类的所有对象以进行进一步处理

    假设您正在使用一个大型工作环境 并且您不太擅长跟上环境变量 或者您有一些自动生成大量对象的进程 有没有办法扫描你的ls 识别具有给定类的所有对象 考虑以下简单示例 Random objects in my environment x lt
  • 如何使用 SQL Server 2008 将学生成绩分为五分位数

    谁能帮我将学生成绩分为五等分吗 我认为 SQL Server 2012 中有一个功能 但我们还没有t upgraded to it as we are using 2008R2 I triedNtile 5 但它没有生成所需的结果 我需要低
  • 在 intel xdk 中构建应用程序:您是否需要构建 cordova 才能使用 cordova api

    我刚刚了解了英特尔 xdk 我正在研究它的工作原理以及生成应用程序的步骤 但是 我在理解它时陷入了困境 你能为我澄清一些事情吗 据我了解 Intel XDK 默认提供扩展 cordova api 的 api 因此 cordova api 包
  • 如何创建使用单独进程的 Android Activity 和 Service

    我有一个 Android 应用程序 其中包含一个活动和一个服务 目前它们都存在于同一进程中并使用相同的堆 但我希望必须为服务分离进程 堆 IE 我希望服务完全独立于活动 这样如果活动崩溃就不会影响服务 然而 我确实希望它们可以作为单个应用程
  • C语言中如何连接两个字符串?

    如何添加两个字符串 I tried name derp herp 但我得到一个错误 表达式必须具有整型或枚举类型 C 不支持其他一些语言所具有的字符串 C中的字符串只是一个指向数组的指针char由第一个空字符终止 C中没有字符串连接运算符
  • 以太坊 Solidity 中的划分

    我正在创建一个发行代币的合约 我希望持有代币的账户能够检查他们拥有的所有代币所占的百分比 我知道以太坊还没有实现浮点数 我应该怎么办 在客户端而不是在 Solidity 中执行该计算可能是最好的 最低的 Gas 成本并且实施起来很简单 如果
  • 无法将 ndarray 转换为 Tensor 或 TensorFlow 模型中出现运算错误

    我正在 TensorFlow 中实现 Wasserstein DCGAN 运行此行时会发生错误 train image sess run image batch 处理这个异常会抛出另一个异常 Fetch argument array 0 0
  • 用自身初始化 C++ const 变量

    刚才我遇到了以下类型的错误 include
  • BeagleBone Black 无法识别 USB 蓝牙适配器

    我正在尝试弄清楚如何让 USB 蓝牙适配器与我的 BeagleBone Black 配合使用 我尝试了一些不同的方法但没有成功 但看到其他人的帖子似乎取得了一些成功 我已经尝试过此处记录的过程 http www michaelhleonar
  • JMS:我们可以在 OnMessage() 中从队列中获取多条消息而不提交或回滚吗

    我正在使用 JMS 客户端 它从远程服务器接收 JMS 消息 我正在客户端的 onMessage 方法中监听 JMS 消息 我面临的问题是 即使我定期在客户端消费消息 消息也会在服务器端累积 我根据在客户端进行的处理发送 rollback
  • /usr/bin/ld:搜索 foo 时跳过不兼容的 foo.so

    我使用的是 Ubuntu 13 10 64 位 在编译 vlfeat 库的 python 包装器时遇到以下错误 g o vlfeat so vl aib o vl generic o vl hikmeans o vl ikmeans o v
  • PHP 套接字与流

    我认为 php 套接字和 php 流是相互重叠的 我已经成功地使用套接字或流制作了一个 CLI PHP 聊天客户端和一个服务器 这里有一些说明性的代码行 使用套接字 main socket socket create AF INET SOC
  • PowerShell 通用集合

    我一直在 PowerShell 中推进 NET 框架 但遇到了一些我不明白的问题 这工作正常 foo New Object System Collections Generic Dictionary 2 System String Syst
  • set_form_data POST 中的转义参数

    这是最奇怪的事情 当我添加 in set form data value被解释为value 在服务器端 当我删除 dontescape 的值被解释为file 3a 2f 2f 2fpath 2fto 到底发生了什么 我不希望任何东西被转义