html - POST无效时重定向到GET时如何发回长内容
问题描述
我试图了解在服务器上验证 HTML 表单并重定向到保持有效内容的同一页面背后的机制。
据我所知,这样的事情的一般流程是:
- 用户发出 GET 请求,检索包含表单的网页(例如,这是 at
foo.com/form
) - 用户插入数据并通过 POST 提交表单
- 在服务器上,我验证输入。如果一切正常,我会做一些事情,比如重定向到某个成功页面、永久链接、主页或其他什么。重定向=发送响应,例如
如果某些字段的验证失败,我会重定向到同一页面 (HTTP/1.1 301 Moved Permanently Location:/some/url
foo.com/form
),但由于我不想分解用户为其他字段发送的有效输入,我实际上重定向到foo.com/form?var1=value1&var2=value2&...
,即我嵌入了这些字段作为位置中的查询参数,将作为新的 GET 请求由用户的浏览器发送以再次呈现表单页面,并预先填充有效字段。
现在,我的问题是:由于 GET 请求在它们可以容纳多少数据作为查询参数方面存在限制,通常如何处理想要发回长值的情况?
例如,我有一个表单,用户可以在其中提交标题和长博客文章。两者都是必需的。用户发送了很长且精心编写的博客文章内容,但忘记发送标题。提交时验证失败,我(服务器)希望完整地发回博客文章,保留发送时没有截断的长内容,并可能添加一些验证通知,上面写着“请指定标题”。
这里通常的解决方案是什么?
解决方案
推荐阅读
- python-2.7 - DynamoDB Python 2.7 Lambda 函数 - 从列表中删除项目
- .net-core - 使用 iText7 许可证库的问题
- regex - 从文本字符串中提取某些值
- c# - 如何在没有 LINQ 的情况下添加小计
- javascript - 如何使用 jCrop 调整图像大小以适合所有纵横比?
- javascript - 在移动设备上停止 HTML 视频自动播放
- sql - 如何删除、更改、然后重新创建使用 SQL 访问列的任何数据库对象?
- python - 在 Python 中混合 `str` 和 `None` 类型时比较一个元组是否更大
- date - 具有混合值的 SAS 变量
- sql - 计算大小写时 *