对 URL 参数进行解码

2023-11-30

我正在与一个服务器交谈,该服务器过去向我发送如下 HTTP 字符串:

/path/to/my/handler/?action-query&id=112&type=vca&info=ch=0&type=event&ev16[sts=begin (...)

因此“info”GET 参数包含“=”和“&”字符。这是相当非正统的,但我们还是为它编写了一个解析器。然而,最近他们决定对其中的一部分进行编码,所以现在字符串看起来像这样..

/path/to/my/handler/?action=query&id=112&type=vca&info=ch%3D0%26type%3Devent%26ev46[sts%3Dbegin (...)

这会破坏我们的解析器,它需要一个像第一个字符串一样的字符串。

我可以以某种方式“解码”该字符串,以便我可以使用旧代码(以便在我们重新编写解析器时它不会被破坏)吗?

根据下面的答案,我们可以使用 urllib.unquote() 来清理字符串。但是,我们依赖 request.GET,它是根据第一个字符串设置的。是否可以根据新转换的字符串重建 GET 对象,或者以某种方式强制它重新评估?


我怀疑你想要的是unquote函数从urllib module.

>>> s = '/path/to/my/handler/?action=query&id=112&type=vca&info=ch%3D0%26type%3Devent%26ev46[sts%3Dbegin'
>>> import urllib
>>> urllib.unquote(s)
'/path/to/my/handler/?action=query&id=112&type=vca&info=ch=0&type=event&ev46[sts=begin'

编辑:我对 Django 不太熟悉,但是其文档的请求和响应对象部分陈述如下:

QueryDict 实例是不可变的,除非您创建它们的 copy() 。这意味着您无法直接更改 request.POST 和 request.GET 的属性。

根据我对这些文档的有限阅读,您也许可以应用unquote()函数到HttpRequest.body属性并建立一个新的QueryDict结果(如有必要,可能会用它来更新当前的结果)。

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

对 URL 参数进行解码 的相关文章

随机推荐

  • Math.round(Math.random) 返回 3 个唯一数字问题 [已关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 好的 所以我需要返回 3 个互不相等的随机数 然后 当
  • 具有不同调色板的 R 热图

    我正在尝试使用不同的调色板在 R 中创建一个简单的热图 我想使用渐变 以便所有低于阈值 N 的数字都指定为一种颜色 例如紫色 所有高于阈值的数字都指定为另一种颜色 例如橙色 数字离阈值越远 颜色应该越深 这是一个示例数据集 Division
  • 解析Json以获取一个NSArray中的所有内容

    内容就是这样 id title website categories id label updated id title website categories id
  • 将矩形扩展 100px

    我在 C 中使用 OpenCV 2 4 4 并且有 矩形 我想将其放大 x 像素 OpenCV 文档提供很好的例子 寻找 将矩形扩大或缩小一定量 如何在图像中使用它http opencv willowgarage com documenta
  • 对于指向同一单元格的两个范围变量,“Is”运算符不会返回 true

    我有一个名为的自定义类imera其中我包含一个名为的范围属性date cell 创建 imera 集合时 每个 imera 的 date cell 都设置为引用 Excel 中的特定单元格 尝试按 date cell 在集合中搜索时 Opt
  • iPhone如何在按音量键时隐藏音量覆盖

    我做了很多事情来解决这个问题 比如添加MPVolumeView 有人说系统音量HUD 如果您在当前添加 MPVolumeView 实例 则会隐藏 但这不起作用 我添加观察者来观察体积的变化 并拍照 但现在我不知道如何隐藏音量HUD 我尝试过
  • 将数字划分为显示在用户表单标签中的唯一排序数字

    我想将数字分成唯一的排序数字 例如 数字可以是 127425 我希望结果为 12457 这意味着已排序并删除了重复项 我认为最好是用例子来解释 Number Result 127425 12457 2784425 24578 121 12
  • 限制 Java 中的文本字段

    有没有办法限制文本字段只允许数字 0 100 从而排除字母 符号等 我找到了一种方法 但它比看起来必要的要复杂得多 如果必须使用文本字段 则应该使用JFormattedTextField with a 数字格式化程序 您可以设置 Numbe
  • Pharo 中的彩色窗口主题?

    如何在 Pharo 中切换到彩色窗口主题 不确定你指的是哪个主题 但你尝试过吗 世界菜单 gt 系统 gt 设置 gt 外观 gt 形态 gt 用户界面主题 选择框将让您选择窗口颜色主题
  • Git "git config --global user.name" 为什么存在这个选项?

    Git 初学者警报 我有一个基本问题 为什么 GIT 允许更改用户名作为配置选项 git config global user name trojan 这个选项是否会为提交者冒充并在历史 日志中造成混乱打开大门 为什么不像从用于连接 GIT
  • 在运行时(动态)创建简单的 POJO 类(字节码)

    我有以下场景 我正在编写一些工具 可以对数据库运行用户输入的查询并返回结果 最简单的方法是将结果返回为 List
  • 将 NiFi 中同一列中的字符串值替换为整数值

    我想更换一个 字符串值 并将该值输入为整数值使用 Nifi ReplaceText 我不知道如何在 NiFi 中实现这一点 所以我的场景如下 我将有一个 CSV 文件 其中包含几个带有整数的字段和几个作为字符串总值的字段 对于具有字符串值的
  • onclick 显示 div,但在单击其他 div 时隐藏

    我正在使用本主题答案 1 中的代码 显示 div onclick 并隐藏触发它的图像 img src Icons note add png then the function would apply a display none to it
  • 将阿拉伯语文本转换为 HTML 代码字符

    我正在尝试发送一封包含阿拉伯文本的电子邮件 我的问题是 当我将阿拉伯文本添加到电子邮件中时 它会将其更改为随机字母 与电子邮件的字符编码有关 我无法更改 是否有内置函数或自定义函数可以用来将阿拉伯语转换为 HTML 代码 以便它随后出现在我
  • BigQuery 中的“立即关注”页面路径

    我正在 BigQuery 中工作 以了解有多少用户完成了特定的页面路径 在会话中的任何时刻 假设页面路径是第 1 页 gt 第 2 页 gt 第 3 页 页面必须按顺序排列 我可以使用 BQ 建立页面路径 但此方法仅适用于识别在会话中的任何
  • 如何在 Windows 服务中为 Clearcase View 映射网络驱动器?

    我想在 Windows 服务内的网络驱动器上映射 Clearcase 视图 我尝试过net use命令 但无法正常工作 您应该能够运行与该命令相同类型的命令当路径太长时使用 即subst subst X c path to my View
  • 将指针传递给函数值不会改变[重复]

    这个问题在这里已经有答案了 include
  • Spring Integration - 以编程方式创建/拆卸通道

    是否可以以编程方式创建 拆卸 Spring Integration 通道 而不是在 Spring 配置中静态声明它们 我的情况是这样的 我有一个需要推送通知的网络应用程序 因此我使用长轮询 这些长轮询调用需要在服务器上阻塞 直到收到事件 我
  • JavaScript(ES6):在条件表达式中使用扩展运算符(?-运算符)[重复]

    这个问题在这里已经有答案了 在 JavaScript 中 可以使用以下方法将数组与另一个数组合并 扩展 运算符如下 1 2 3 4 5 6 gt 1 2 3 4 5 6 但是 似乎没有资格在三元内部使用扩展运算符 表达 true 1 2 3
  • 对 URL 参数进行解码

    我正在与一个服务器交谈 该服务器过去向我发送如下 HTTP 字符串 path to my handler action query id 112 type vca info ch 0 type event ev16 sts begin 因此