Response.Redirect 使用 POST 而不是 Get?

2023-12-08

我们需要提交表单并保存一些数据,然后将用户重定向到异地页面,但在重定向中,我们需要使用 POST 来“提交”表单,而不是 GET。

我希望有一种简单的方法可以实现这一点,但我开始认为没有。我想我现在必须创建一个简单的其他页面,其中只有我想要的表单,重定向到它,填充表单变量,然后对仅调用 document.forms[0].submit( 的脚本进行 body.onload 调用);

谁能告诉我是否有替代方案?我们可能需要在项目后期对此进行调整,并且可能会变得有点复杂,因此如果有一个简单的方法,我们可以完成所有非其他页面依赖的工作,那就太棒了。

无论如何,感谢您的所有回复。


执行此操作需要了解 HTTP 重定向的工作原理。当你使用Response.Redirect(),您发送一个响应(到发出请求的浏览器)HTTP 状态代码 302,它告诉浏览器下一步要去哪里。根据定义,浏览器将通过GET请求,即使原始请求是POST.

另一种选择是使用HTTP 状态代码 307,它指定浏览器应以与原始请求相同的方式发出重定向请求,但会提示用户安全警告。为此,您可以编写如下内容:

public void PageLoad(object sender, EventArgs e)
{
    // Process the post on your side   
    
    Response.Status = "307 Temporary Redirect";
    Response.AddHeader("Location", "http://example.com/page/to/post.to");
}

不幸的是,这并不总是有效。不同浏览器的实现方式不同,因为它不是常见的状态代码。

唉,与 Opera 和 FireFox 开发人员不同,IE 开发人员从未阅读过规范,即使是最新、最安全的 IE7 也会将 POST 请求从域 A 重定向到域 B,而不会出现任何警告或确认对话框! Safari 的行为方式也很有趣,虽然它不会弹出确认对话框并执行重定向,但它会丢弃 POST 数据,有效地将 307 重定向更改为更常见的 302。

所以,据我所知,实现这样的事情的唯一方法是使用 Javascript。我能立即想到两个选择:

  1. 创建表单并拥有其action属性指向第三方服务器。然后,向提交按钮添加一个单击事件,该按钮首先使用数据向您的服务器执行 AJAX 请求,然后允许将表单提交到第三方服务器。
  2. 创建要发布到您的服务器的表单。提交表单后,向用户显示一个页面,其中包含一个表单,其中包含您要传递的所有数据,所有数据都在隐藏输入中。只需显示“正在重定向...”之类的消息。然后,在将表单提交到第三方服务器的页面中添加一个 javascript 事件。

在这两者中,我会选择第二个,原因有两个。首先,它比第一个更可靠,因为它不需要 JavaScript 即可工作;对于那些没有启用它的人,您可以随时使隐藏表单的提交按钮可见,并指示他们在需要超过 5 秒的时间时按下该按钮。其次,您可以决定将哪些数据传输到第三方服务器;如果您只使用处理表单,您将传递所有发布数据,这并不总是您想要的。 307 解决方案也是如此,假设它适用于所有用户。

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

Response.Redirect 使用 POST 而不是 Get? 的相关文章

  • 浏览器关闭时调用页面方法

    您好 我正在尝试在 bodyunload 方法上调用 webmethod 但它仅在页面加载本身时被触发 我该如何预防 这是我正在使用的代码 WebMethod public static void AbandonSession HttpCo
  • 使用存储库时,ASP.NET MVC 中业务逻辑的最佳位置是什么?

    在 ASP NET MVC 项目中实现数据库存储库时 将业务逻辑放入其中是否正确 或者将逻辑放入控制器类中可能更好 或者使用额外的服务和帮助程序类来操作数据 最终 除了其自己的层 作为 模型 层的一部分 之外 您的业务逻辑没有一个完美的位置
  • 将日期时间字符串转换为 Utc

    如何将日期时间字符串转换为 GMT 中的 utc 时间格式 var x 02 01 2017 10 00 var z DateTime ParseExact x ddd dd MMM yyyy HH mm ss GMT CultureInf
  • 使用 asp.net 重写 URL。是否需要配置?

    我正在尝试在我的项目中启用重写的网址 这篇文章描述得很好 scottgu 的 url 重写 http weblogs asp net scottgu archive 2007 02 26 tip trick url rewriting wi
  • Web API 中的模型验证 - 在没有 throw 语句的情况下抛出异常?

    我见过model validation from here http www asp net web api overview formats and model binding model validation in aspnet web
  • 如何等待文本框在 watin 中启用

    我的页面上有一个文本框 在加载事件文本框上禁用 10 然后启用 那么如何在 watin 中等待 10 秒 我正在尝试这段代码 IE ie new IE http localhost 2034 WebForm3 aspx ie ShowWin
  • Mac OS X 上的 ASP.NET MVC 5

    我想了解如何在运行 OS X 10 10 5 的 Mac 上使用 Microsoft ASP NET 框架构建网站 我将跟随一个使用 ASP NET MVC 5 的在线课程 到目前为止我读过的所有教程都说要使用Homebrew http b
  • 失败 - 下载 EPPlus.dll 制作的 Excel 文件时出现网络错误

    我尝试下载由EPPlus dll来自 asp net c Web 表单应用程序 但我失败了 网络错误 需要注意的是 上述错误仅发生在 chrome 中 在其他浏览器中可以成功完成该工作 顺便说一下 这个错误不会发生在我的本地主机上 它只发生
  • 使用 MVC3 RTM 进行 Ninject

    我已将 MVC3 从 RC2 升级到 RTM 我们使用的是 Ninject 2 1 0 76 但升级后就停止工作了 因此 我使用 NuGet 管理器获取最新的 Ninject Ninject MVC3 和 Ninject Web Mvc 库
  • 如何在没有 (L)GPL 库的情况下在 Python 中创建双重身份验证 HTTPS 客户端?

    客户端和服务器都是内部的 各自都有一个由内部CA签名的证书和CA证书 我需要客户端根据服务器拥有的 CA 证书来验证服务器的证书 它还应该将其证书发送到服务器进行身份验证 The urllib2手册说不执行服务器身份验证 PycURL是一个
  • 停止 ASP.NET 按钮的页面重新加载

    NET 应用程序中 我插入了一个调用 Javascript 函数的按钮 OnClientClick事件 和 VB NET 函数 OnClick event
  • 如何获取网络上可用的 SQL Server 列表?

    我正在尝试这个 但我不知道如何继续 你能帮我个忙吗 SqlDataSourceEnumerator instance SqlDataSourceEnumerator Instance DataTable table instance Get
  • AngularJS:如何缓存从 $http 调用返回的 json 数据?

    如何缓存从 http 调用返回的 json 数据 我使用以下风格的 http 调用 http url SomeWebMethodUrl method POST data query somevalue headers Content Typ
  • 使用signinmanager成功登录后,用户仍然显示为已注销?

    我已将 Asp Net 身份框架添加到从前端调用的 WebAPI 中 注册帐户后 并看到它在数据库中正确显示 我使用该用户的用户名和密码登录 结果成功 但根据登录管理器 用户未登录 我尝试使用 cookie 身份验证使用此示例 https
  • 单击 GridView 查找选定行

    我正在尝试获取 GridView 并从单击的行中获取数据 我已经尝试了下面的代码 当我单击该行时 我会返回选定的索引 但是当我查看 GridView 中的实际行时 它们显示为空 不知道我错过了什么 ASP 使我的网格
  • 如何在后台调用存储过程?

    我有一个存储过程 大约需要 2 3 分钟才能完成执行 从 ado net 我想让存储过程执行在后台发生 一旦我向存储过程发出请求 我就必须返回到我的代码 谁可以帮我这个事 你应该调查一下螺纹加工 http msdn microsoft co
  • 如何使用 OpenXML 包自动调整 Excel 列

    此代码使用 openxml 包生成 Excel 电子表格 请任何人告诉如何自动调整其列宽 OpenXmlPackage SpreadsheetDocument spreadsheetDocument OpenXmlPackage Sprea
  • 当 AutoGenerateColumns="true" 时动态设置 gridview 列的宽度

    当我使用属性 AutoGenerateColumns 为 AutoGenerateColumns true 时 我在设置 gridview 的宽度时遇到问题 gridview 是在代码后面进行数据绑定的 如果我使用 gridview1 co
  • EF Core - 在运行时向数据库添加新表

    我有一个 asp net core 项目 需要能够在运行时支持插件 因此 我需要根据插入的内容生成数据库表 每个插件都分为单独的项目 并且它们具有他们自己的 DbContext 类 要使用的插件在编译时是未知的 只有在运行时才知道 现在在
  • JQuery、ASCX 和 webmethods 似乎不起作用

    我有一个级联下拉列表 其中 3 个 类型 类别和子类别 首先类型负载 然后选择类型 类别负载以及选择类别 子类别负载 我还有 2 个按钮 添加类别 和 添加子类别 单击这些按钮后 我调用 JQuery 模态表单来添加它们 我在代码后面使用

随机推荐

  • 无法使用意图(Gmail)从我的应用程序发送带有附件的电子邮件

    我正在尝试使用 Intent 发送 sdcard 文件夹中包含的文件 log 文件 这是代码 public void sendMail Intent intent new Intent Intent ACTION SEND MULTIPLE
  • 以位图形式可视化 ASCII 文本

    我有一个巨大的 ASCII 文本 代表像 ASCII 艺术这样的位图 现在我正在寻找类似倒置 ASCII art 生成器的东西 我喜欢将每个字符转换为彩色像素 有没有免费的工具可以做这样的事情 您没有使用特定编程语言的标签 因此 Mathe
  • SwiftUI:.fileImporter 修饰符在通过点击文件选择器“外部”解除时不会更新绑定

    我在 SwiftUI 视图中使用 fileImporter 修饰符 它工作得很好 除了一个非常烦人的问题 我无法在任何地方找到解决方案 绑定到状态变量的 选择器 showFileImporter根据文档的要求 最初设置为 false 并配置
  • 将 std::tuple 转换为 std::array C++11

    如果我有std tuple
  • 性能问题:存储对 DOM 元素的引用与使用选择器

    因此 在我的应用程序中 用户可以在某些 div 标签内创建一些内容 并且每个内容 或者我称之为 元素 都有自己的对象 目前 我使用一个函数来使用 jquery 选择器计算该元素已放置在其中的原始 div 标签 但我想知道在性能方面 一旦元素
  • 如何进行sql循环查询来检查值之间的差异?

    首先 我不是以英语为母语的人 这是一个很难解释的问题 如果您有任何疑问 请告诉我 我们使用 GPS 车辆跟踪设备 该设备经过编程 在不移动时每 5 分钟发送一次车辆位置并将其存储在数据库中 在移动时每 100 米发送一次车辆位置 该数据库有
  • joomla中如何通过文章ID获取文章的完整url?

    我有文章 ID 如何获取本文的有效完整网址 这篇文章已经与菜单相关联 但我可能不知道 php 中有没有简单的方法来获取url 我使用的是joomla 3 2 我已经尝试跟随了 article ControllerLegacy getInst
  • JAXB 将具有相同命名空间的多个文件绑定到同一个包

    我有这样的架构层次结构 common legacy legacy xsd xmlns http common legacy other xsd xmlns http common legacy xsd xmlns http common l
  • 谁能推荐一个简单的 Java Web 应用程序框架? [关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 Locked 这个问题及其答案是locked因为这个问题是题外话 但却具有历史意义 目前不接受新的答案或互动 我正在尝试开始使用 Java 构建一个相对快速的 Web 应用程序 但我
  • 从 3 个不同的单声道创建实体

    我是反应式编程的新手 我看到可以压缩两个单声道来生成结果 Mono
  • 来自 Fortran 代码的 RECTILINEAR_GRID 的二进制 VTK

    我有一个 fortran 代码来生成二进制 VTK 格式的网格 此代码生成一个二进制 VTK 文件 如下所示 vtk DataFile Version 3 0 vtk output BINARY DATASET RECTILINEAR GR
  • 使用 Cartopy 合并国家/地区

    我正在使用以下代码制作一张瑞典 挪威和芬兰作为一个区域的地图 然而 我正在为此挣扎 我正在关注这个示例 Python Mapping in Matplotlib Cartopy Color One Country from shapely
  • 更改现有 Django 应用程序中主键的最佳方法是什么?

    我有一个处于测试模式的应用程序 这个应用程序的模型有一些带有显式primary key的类 因此 Django 使用这些字段并且不会自动创建 id class Something models Model name models CharF
  • 在 JScrollPane 中看不到组件

    我使用 JScrollPane 来保存大面积文本的 JTextArea 我直接将 TextArea 添加到 JFrame 中 效果很好 但我将它添加到滚动窗格并添加滚动窗格 我没有看到文本区域 这是我的 SSCCE public class
  • 在Linux上使用javah

    我有一个在 JNI 上使用的简单类 我需要将其导出到头文件 h 我读过我需要使用javah命令 通过转到src项目文件夹 然后输入 javah jni com main package NativeClass 在 Windows 上它工作正
  • 如何在谷歌云存储中存储同名文件

    我正在创建一个网站 其中有很多用户上传的图像文件 因此随着时间的推移 链接可能会在 Google 云存储上出现同名图像 即使一个用户也可以随着时间的推移上传同名图像 那么我该如何解决这个问题 您可以做的一件事是在上传时向文件名添加时间戳 e
  • Karaf - Kafka OSGI 捆绑包 - 生产者问题

    我正在尝试在 apache Karaf version 4 0 3 中为 Kafka 生产者创建一个简单的捆绑包 这是我的Java代码 Properties props new Properties props put bootstrap
  • SQLite 中的移动平均线

    我想计算 SQLite 表中数据的移动平均值 我在MySQL中找到了几种方法 但在SQLite中找不到有效的方法 在 SQL 中 我认为类似的事情应该可以做到 但是 我无法尝试 SELECT date value avg value OVE
  • 在MYSQL中使用hibernate注解设置默认值

    我在互联网上搜索过 看到了有关使用 mysql 中的 hibernate 注释在实体类中设置默认值的想法 并且我已经完成了将默认值设置为数据类型整数的列 如下所示 Column name COLUMN NAME insertable fal
  • Response.Redirect 使用 POST 而不是 Get?

    我们需要提交表单并保存一些数据 然后将用户重定向到异地页面 但在重定向中 我们需要使用 POST 来 提交 表单 而不是 GET 我希望有一种简单的方法可以实现这一点 但我开始认为没有 我想我现在必须创建一个简单的其他页面 其中只有我想要的