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 绑定 的相关文章

  • 在 MVC4 中访问原始 http 请求

    stackoverflow 上已经有很多关于访问 HttpRequest 的问题 但我还没有找到可以使用的问题 如果有人能指出我的答案 我将不胜感激 我的问题是 我想以最简单的方式修改现有应用程序 以便添加完整的请求日志记录 我知道这可以通
  • 如何从 Android 调用 RESTful Web 服务?

    我已经使用 jersey 框架和 java 在 netbean IDE 中编写了 REST Web 服务 对于每个请求用户都需要提供用户名和密码 我知道身份验证不好 使用curl命令 例如 curl u 用户名 密码 X PUThttp l
  • 来自 Yelp API 的错误请求

    灵感来自这个 Yelp 教程 https github com Yelp yelp api blob master v2 python sample py 我创建了一个脚本来搜索给定城市的所有健身房 我调整了脚本这些更新 http www
  • 有谁知道为什么我收到 HttpWebRequest 超时?

    我想知道你是否可以帮助我解决我遇到的错误 我创建了一个 HTTP 管理器 可以帮助我处理来自网站的 POSTing GETing 数据 直到最近我尝试混合使用两者时 它一直工作得很好 第一个循环一切正常 在第二个循环中它挂在 HttpWeb
  • 传递给过程的列表转换为过程内列表的列表

    我正在 DrRacket 上调试这段代码 lang racket define last element on list lambda l cond null l null cdr l car l else last element on
  • Tornado - RequestHandler 的 get_argument()、get_query_argument() 和 get_body_argument() 之间有什么区别?

    何时使用RequestHandler get argument RequestHandler get query argument and RequestHandler get body argument 是什么use case对于他们每个
  • 什么是“3D语法”?

    在编写 Racket 宏的上下文中 3D 语法 是什么意思 这句话我听过好几次了 包含一次对宏的引用I正在写作 但那是不久前的事了 我修复了它 现在我不记得我最初做错了什么 另外 是 3D 语法吗always坏的 或者是像eval 如果你认
  • 在 REST WCF 中读取 HttpRequest 正文

    我在 net 4 中运行了一个 REST WCF 服务 并且我已经测试了它正在工作并接受我对其发出的 HttpRequest 的 Web 服务 但我在尝试访问 Web 服务中的 HttpRequest 主体时遇到了问题 我尝试使用 Fidd
  • 如何解析 Spray-routing 中的 get 请求参数?

    这就是代码部分的样子 get respondWithMediaType MediaTypes application json entity as HttpRequest obj gt complete println obj ok 我可以
  • 在 portlet 中使用 json 对象响应 http 请求

    我是liferay portlet 开发的初学者 我正在开发一个portlet 它接收http get 请求 处理一些信息 然后必须返回一个json 对象 我的问题是我的 portlet 发送整个 html 页面而不仅仅是 json 对象
  • Lisp 中的 (定义 (平均 ....))

    我只是在玩scheme lisp 并正在考虑如何纠正我自己的定义average 我不确定如何做一些我认为需要的事情 定义一个接受任意数量参数的过程 计算这些参数 将参数列表传递给 以将它们加在一起 有人有定义的例子吗average 我似乎对
  • 如何在球拍中查看扩展宏?

    我得到了这个答案https stackoverflow com a 70318991 https stackoverflow com a 70318991关于编写一个简单的宏来记录宏扩展时的时间 然后始终返回该时间 lang racket
  • 当请求不是来自 Firebase 控制台时,RemoteMessage.GetNotification() 返回 null?

    我正在测试 Firebase 云消息传递 如果我使用 Firebase 控制台发送消息 在我的代码中我设置了值的通知对象 不是问题 public override void OnMessageReceived RemoteMessage m
  • 从when语句内的函数返回

    我想做的就是使用 when 语句返回一个值 我想要以下功能 if x return y 我正在尝试使用 when x y 但是when语句并没有以退出函数并返回y的方式进行计算 它只是愉快地继续下一行 有没有办法做到这一点而不需要制作一个看
  • 在Racket中将结构递归转化为累积递归

    我有一些代码来查找最大高度并将其替换为关联的名称 身高和姓名有单独的列表 每个列表的长度相同且非空 我可以使用结构递归来解决这个问题 但必须将其更改为累积递归 而且我不确定如何做到这一点 我见过的所有例子都让我困惑 有人能够将代码变成使用累
  • 我在函数的最后一次递归调用中得到“方案应用程序而不是过程”

    所以这是代码 define time prime test n newline display n start prime test n runtime define start prime test n start time if pri
  • HttpRequest 和 XMLHttpRequest 之间的真正区别

    阅读前注意事项 这不是重复的xmlhttprequest 和 httprequest 之间的区别是什么 https stackoverflow com questions 8499062 what are differences betwe
  • 如何更改JMeter HTTP请求中Post Body的内容

    请原谅我的无知 因为我是一个jmeter菜鸟 我的 web 服务接受 JSON 对象 因此我能够编写一个基本测试 在该测试中我在 http 请求的 Post Body 部分中使用 JSON 对象创建一个 HTTP 请求 不管怎样 我想要做的
  • 如何删除 chrome 的 arc(高级 REST 客户端)扩展中保存的请求?

    如何删除 Chrome 的 ARC 高级 REST 客户端 扩展中保存的请求 我目前在 Chrome 中安装了 ARC 扩展并保存了一些请求 我寻找过 但没有找到任何方法从 已保存 列表中删除请求 尝试选择请求并按删除键 从键盘 但不起作用
  • 计算二项式时“应用程序:不是过程”

    我正在定义一个函数binomial n k 又名帕斯卡三角形 但出现错误 application not a procedure expected a procedure that can be applied to arguments g

随机推荐

  • 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和朋友做我想做的事 但附加了一个关于与文件上传相关的潜在安全风险的可怕注释 其结论是 因此 我们建议反对他们 使用 但它们是为 与旧代码的兼容性