Racket 中的 POST/GET 绑定

2024-03-18

Racket 中是否有内置的方法来获取 POST/GET 参数?extract-binding和朋友做我想做的事,但附加了一个关于与文件上传相关的潜在安全风险的可怕注释,其结论是

因此,我们建议反对他们 使用,但它们是为 与旧代码的兼容性。

我能想到的最好的办法是(并提前原谅我)

(bytes->string/utf-8 (binding:form-value (bindings-assq (string->bytes/utf-8 "[field_name_here]") (request-bindings/raw req))))

但这似乎不必要地复杂(而且它似乎会遇到绑定部分中记录的一些相同的错误)。

是否有一种或多或少标准的、无错误的方法来获取 POST/GET 变量的值(给定字段名称和请求)?或者更好的是,一种以列表/散列/列表形式返回 POST/GET 值集合的方法?除了其中任何一个之外,是否有一个函数可以执行相同的操作,但仅适用于 POST 变量,而忽略 GET?


extract-binding 不好,因为它不区分大小写,对于多次返回的输入来说非常混乱,没有处理文件上传的方法,并且自动假设所有内容都是 UTF-8,这不一定是真的。如果您能接受这些问题,请放心使用。

当数据为 UTF-8 并且只有一个字段返回时,您编写的代码片段有效。您可以将其定义为一个函数,并避免多次编写。

一般来说,我建议使用 formlet 来处理表单及其值。

现在你的问题...

“在给定字段名称和请求的情况下,是否有一种或多或少标准的、无错误的方法来获取 POST/GET 变量的值?”

你拥有的是标准的东西,尽管你错误地认为只有一个值。当有多个时,您需要过滤字段名称上的绑定。同样,你也不need要将值转换为字符串,您可以将其保留为字节就好。

“或者更好的是,一种以列表/散列/列表形式取回 POST/GET 值集合的方法?”

这就是 request-bindings/raw 的作用。它是一个列表绑定吗?对象。由于返回多个值,将其转换为哈希是没有意义的。

“除了其中任何一个,是否有一个函数可以执行相同的操作,但仅适用于 POST 变量,而忽略 GET?”

Web 服务器向您隐藏了 POST 和 GET 之间的区别。您可以检查 uri 和原始发布数据来恢复它们,但您必须自己解析它们。我不推荐它。

Jay

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

Racket 中的 POST/GET 绑定 的相关文章

  • 如何通过cfhttp模拟真实的http请求?

    我需要通过 cfhttp 模拟真实的 http 请求 我正在使用 ColdFusion 获取 rss feed 但今晚他们开始阻止我的请求并发送索引页面作为响应 而不是 rss feed 我为 cfhttp 添加了 useragent 但没
  • gen:Racket 类的自定义编写

    我正在寻找规范的方法来指定自定义方法来输出 Racket 对象的字段 换句话说 我正在寻找与 Java 相当的 RackettoString方法 如果存在 我知道对于结构可以使用gen custom write指定write proc功能
  • 在 C# 中使用私钥对数据进行签名

    我需要使用算法 SHA1RSA Rsa 密钥长度 2048 和 64 基本编码 用一个私钥对一些数据进行签名 我的代码是这样的 string sPayload HttpWebRequest httpWebRequest HttpWebReq
  • 在.NET中发送HTTP POST请求

    我怎样才能创建一个HTTPPOST https en wikipedia org wiki POST 28HTTP 29请求并发送正文中的数据 有多种方法可以执行 HTTPGET https en wikipedia org wiki Hy
  • swf上传302错误

    所以我有这个 javascript 代码用于将 swfuploader 加载到页面上 http code google com p swfupload http code google com p swfupload swfuPubThum
  • 一个拼接语法类,匹配可选模式并绑定属性

    我的拼接语法类定义如下 语法类匹配两个语句 第一个模式 其中一个语句 第三个和第二个模式 的序列 甚至可能根本不匹配这些语句 最后一个模式 正如您所看到的 有相当多的 重复 代码 因为每个模式要么返回模式中捕获的某些内容的属性 要么返回空的
  • 有没有办法检查一个列表的所有元素是否都包含在球拍的另一个列表中?

    我想要一个执行类似操作的函数 gt function 1 2 3 4 1 2 3 4 5 t 在这种情况下返回 t 因为第一个列表的所有元素都包含在第二个列表中 有没有一个函数可以做到这一点而不必担心顺序 在这种情况下 您不会将列表进行比较
  • 在Scheme中编写一个自动记忆器。有关宏和包装器的帮助

    我在Scheme中编写自动记忆器时遇到了一些问题 我有一个有效的 memoize 函数 它创建一个哈希表并检查该值是否已经计算出来 如果之前已经计算过 则返回值 否则调用该函数 define memoizer fun let a table
  • 从套接字读取时如何检测客户端何时完成发送请求?

    我现在正在编写一个 http 服务器 但从套接字读取时遇到问题 我的问题是inputStream来自客户端的数据永远不会结束 它会一直读取 直到客户端关闭 我知道客户端发送http请求后并不会立即关闭与服务器的连接 我怎样才能退出while
  • Scheme/Racket有枚举操作吗?

    Scheme Racket 是否有相当于 Haskell 中的 a b 表示法的枚举表示法 在 Haskell 中 1 5 计算结果为列表 1 2 3 4 5 for list i in range 1 6 i sequence gt li
  • 有人能用简单的话解释一下 call/cc 吗?

    我正在研究语言球拍并试图掌握 call cc 的实际用途 有人可以用简单的语言解释一下并举一两个例子吗 谢谢 并非所有实现call cc完全相同 但希望这个答案可以适用于所有常见的变体 包括球拍 没有什么麻烦 这个故事其实是根据c内置于Un
  • 展开方案中的函数

    Goal 实施unfold仅使用两个参数的函数 论据 第一个参数是 f 它接受某种类型 I 的初始值并返回 nil 或两个元素的 cons 对 这两个元素中的第一个是某种类型 A 的列表中的下一个元素 下一个初始值又是某些类型 I 第二个参
  • 在 package:html、dart:html、dart:io(类 HttpClient)和 package:http API 之间进行选择来获取 HTTP 资源

    我意识到目前至少有三个 官方 Dart 库允许我执行 HTTP 请求 更重要的是 其中三个库 dart io 类 HttpClient package http 和 dart html 各自具有不同的 不兼容的 API 截至今天 packa
  • 如何在方案中向后打印字符串?

    我知道如果我按照以下方式编写方案代码并输入 单词 a b c 它将以相同的顺序输出列表 您能告诉我是否有一种方法可以以相反的顺序打印出来 例如 列出 c b a 它需要是我以相反顺序打印出来的用户输入 所以 我不能称之为 反向 a b c
  • 如何解析 Spray-routing 中的 get 请求参数?

    这就是代码部分的样子 get respondWithMediaType MediaTypes application json entity as HttpRequest obj gt complete println obj ok 我可以
  • 如何在球拍中查看扩展宏?

    我得到了这个答案https stackoverflow com a 70318991 https stackoverflow com a 70318991关于编写一个简单的宏来记录宏扩展时的时间 然后始终返回该时间 lang racket
  • 从when语句内的函数返回

    我想做的就是使用 when 语句返回一个值 我想要以下功能 if x return y 我正在尝试使用 when x y 但是when语句并没有以退出函数并返回y的方式进行计算 它只是愉快地继续下一行 有没有办法做到这一点而不需要制作一个看
  • 球拍博士中的位图[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 如何在 drracket 中的框架 gui 上加载位图 请给出必要的代码和参考文献 我承认 我很难在文档中找到正确的位置来指向您 这是
  • 在Racket中将结构递归转化为累积递归

    我有一些代码来查找最大高度并将其替换为关联的名称 身高和姓名有单独的列表 每个列表的长度相同且非空 我可以使用结构递归来解决这个问题 但必须将其更改为累积递归 而且我不确定如何做到这一点 我见过的所有例子都让我困惑 有人能够将代码变成使用累
  • 用作 ServiceStack 的 IoC 时在 autofac 中配置生命周期范围

    我目前正在使用 AutoFac 作为我们的 ServiceStack Web 服务应用程序的 DI 容器 我能够配置接线和所有内容 但在阅读了有关范围的部分后 我不知道在注册我的组件时最好使用哪个范围 在我们的特定情况下 我认为 PerHt

随机推荐

  • Java SWT 应用程序 - 置于前台

    我目前正在 Windows 7 上开发 SWT java 应用程序 通常应用程序将最小化 当串行端口上有事件时 应用程序应最大化自身 以下代码执行最大化部分 private void bringToFront final Shell she
  • 使用 Python 从解析的 HTML 中提取文本

    我是Python新手 我一直在尝试使用已用BeautifulSoup解析的正则表达式搜索html 我没有取得任何成功 我认为原因是我不完全理解如何正确设置正则表达式 我看过有关类似问题的旧问题 但我仍然没有弄清楚 如果有人可以提取 torr
  • 从命令行启动的 Visual Studio Code 合并了两个进程

    如果从命令行启动 Visual Studio Code 输入 code 则命令行 终端 进程和 vsc 进程将链接起来 vsc 日志条目写入终端 终端变得脆弱或无法使用 终止终端也会终止 VSC 这是在 Windows 10 VSC v 1
  • Json ajax 带参数传递

    function BindJson ajax type POST url NewPage aspx SerializeJson data contentType application json dataType json success
  • C++ NetBeans:如何将我的 .o 文件链接到我的项目?

    我已经买了一个课程 我有标题 h 和一个目标文件 o 我如何链接 o我的 NetBeans IDE 中的文件吗 Thanks 您需要添加您的 o文件作为外部库 我能够使用以下步骤完成此操作 转到项目属性 在下面Build gt Linker
  • Google Apps 脚本 Web 应用程序在外部网站上进行身份验证

    我需要实现一个用于登录网站的 Google Apps 脚本应用程序 然后如果该网站上的身份验证过程成功 用户应该在 google 脚本侧边栏中收到一条消息 例如 用户输入他的电子邮件和密码 然后按登录按钮 如果凭据正确 他应该登录网站 如果
  • 如何控制 graphviz 中的节点放置(即避免边缘交叉)

    我正在使用 graphviz 点 生成您可以在下面看到的图表 左下角的节点 红色椭圆 会引起烦恼 因为它的边缘与相邻节点的多个边缘交叉 有没有办法将节点放置限制在某个区域 您可以创建一个不可见的约束 以使红色节点出现在所有其他节点的左侧 r
  • 使用r32平台工具的ADB配对未知命令

    我刚刚下载了全新安装的 SDK 平台工具 因为我不需要 IDE 版本 r32 0 0 当使用 adb 对时 我得到以下信息 PS C userpath platform tools r32 0 0 windows platform tool
  • C 中的图像输出

    简单的问题 有没有办法使用 C 显示文件中的图像 例如 bmp 它显然不在graphics h中 而且我不能使用Allegro 因为它不支持Borland 或者我读过 我需要在学校项目中使用非常旧的编译器 我想问是否有人有使用其他库执行此操
  • 没有游标的存储过程

    如何在没有光标的情况下编写以下 sp 更重要的是它没有给我想要的输出 我没有写这个 我只是想解释一下这有什么问题 ALTER PROCEDURE dbo AccreditationExpiryCheck AS BEGIN SET NOCOU
  • Proguard retrace 没有将堆栈跟踪映射到实际源

    我一直在使用 eclipse 内置的 proguard 工具来混淆代码 效果很好 但是 当我尝试重新跟踪混淆代码的堆栈跟踪时 重新跟踪不会输出未混淆的堆栈跟踪 我仔细检查了mapping txt 以确保我使用的是正确的 这是我的堆栈跟踪 E
  • 如何进行 MANCOVA

    我正在尝试在 R 中执行 mancova 但是 我尝试过jmv https cran r project org web packages jmv jmv pdf包裹 x lt cbind total c total p dependent
  • n 层架构的单元测试

    我使用 3 层架构 控制器 业务和数据层 在我的数据层中 我通过传递连接字符串和其他必要的参数来调用 Sql Server 数据库 我必须为控制器层和业务层编写单元测试 我想编写一个存根 假存储库 从中返回硬编码值 结果 当我为业务层编写测
  • Git 交互式 rebase 无需打开编辑器

    Git 允许某些命令在不先打开编辑器的情况下创建或修改提交 例如 git commit amend no edit git commit fixup HEAD 我已经设定rebase autosquash to true 以便交互式变基的待
  • Android java.net.UnknownHostException:主机未解析(策略问题)

    我有 Android 代码 它使用后台进程定期 例如每小时 连接到网络上的内容源以检查更新的内容 当新用户下载该应用程序并首次运行它时 似乎 这只是 目前看来 在首次运行的情况下 因为我们服务器的 DNS 尚未缓存在设备上 第一个系列的连接
  • 使用钥匙串在 iOS 扩展及其包含的应用程序之间共享?

    我了解我可以通过启用应用程序组并使用 NSUserDefaults 在我的共享扩展及其包含的应用程序之间共享数据 请参阅在 iOS 8 共享扩展和主应用程序之间共享数据 https stackoverflow com questions 2
  • XMLHttpRequest - 使用后释放?

    我正在编写一个完全由 AJAX 驱动的浏览器应用程序 我一生中第一次 这意味着 这将是一个留在浏览器中的页面 根据需要加载程序组件 浏览器历史记录将是 好吧 没有 页面根本不会刷新 我关心的是我应该如何处理 XMLHttpRequests
  • 无法使用测试帐户在 paypal 沙箱中付款

    自从 paypal 更新了他们的沙箱后 我遇到了很多问题 我无法使用沙箱模拟付款 每当我使用更新之前创建的 旧测试帐户 时 都会出现此错误消息 该沙盒电子邮件地址不可用 请输入另一个电子邮件地址 我创建了一个新帐户 但不幸的是它也不起作用
  • 如何在android中压缩视频文件

    我想在上传到服务器之前压缩视频文件 我浏览了此链接如何将视频压缩到最大级别android https stackoverflow com questions 21002163 how to compress a video to maxim
  • Racket 中的 POST/GET 绑定

    Racket 中是否有内置的方法来获取 POST GET 参数 extract binding和朋友做我想做的事 但附加了一个关于与文件上传相关的潜在安全风险的可怕注释 其结论是 因此 我们建议反对他们 使用 但它们是为 与旧代码的兼容性