IIS 6 中的重定向设置是不是适用于表单 POST?

Posted

技术标签:

【中文标题】IIS 6 中的重定向设置是不是适用于表单 POST?【英文标题】:Will an redirect setup in IIS 6 work for a form POST?IIS 6 中的重定向设置是否适用于表单 POST? 【发布时间】:2014-02-17 12:11:06 【问题描述】:

我有一个网站,第三方在其中执行 HTTP 发布到文件 - 我们称之为 http://mywebsite/third-party-post.cfm(它是一个 ColdFusion 网站)。

我想将代码移动到一个新文件 - 我们称之为http://mywebsite/third-party-post-new.cfm

如果我在 IIS 中更改文件属性:

这是否会为 POST 操作传递表单字段,或者这样的重定向是否仅适用于 GET?

【问题讨论】:

仅供参考,我刚刚在 IIS 7.5 中运行了一个测试,并且表单参数没有传递到重定向页面。这在 IIS 6 中可行吗? 【参考方案1】:

您不能在重定向期间传递 post 参数。 Web 服务器实际上会回调浏览器以询问它是否可以移动页面,然后浏览器重新向服务器请求将其移动到的 URL 提交请求。我相信这是对浏览器的 301 调用。你永远不会看到它,它会在几毫秒内发生。当重定向发生时,它将破坏所有提交的支持来自浏览器的新请求的发布参数,服务器会将其视为没有发布数据的全新请求。

您需要通过 GET 请求或包含您希望在旧页面上运行的脚本以其他方式将数据传递给页面。

您可能最好实际使用 URL 重写来更改 Web 服务器如何查看对该给定页面的请求。

the apache script would look something like this

RewriteEngine on
RewriteBase    /

RewriteCond   %REQUEST_FILENAME !-d
RewriteRule   ^third-party-post.cfm /third-party-post-new.cfm [L,QSA]

上面的代码将获取一个对原始页面的请求并将其转换为对新页面的请求。如果仍将保留原始 URL,但将显示新页面。 IIS 有一个 URLrewrite 功能,您可以使用,或者如果您熟悉 Htaccess 和 apache,您可以使用 Helicon Ape http://www.helicontech.com/ape/ 来读取您网站的 htaccess 文件。

【讨论】:

感谢您提供的信息。我可能会尝试使用 URLRewrite 规则,但这可能不是维护的最佳主意。我认为此时最好的选择是联系供应商并让他们更改发布到的 URL。【参考方案2】:

见帖子https://***.com/a/13628908/2482184。尽管这个问题是关于 apache 的,但无论您使用哪个版本,IIS 都是如此。还有许多其他选项可以绕过此问题。其中之一是创建 /third-party-post.cfm 文件并包含 /third-party-post-new.cfm。您甚至可以使用新的 html5 技术来更改 url 而无需刷新页面(参见 http://spoiledmilk.com/blog/html5-changing-the-browser-url-without-refreshing-page/)。

【讨论】:

以上是关于IIS 6 中的重定向设置是不是适用于表单 POST?的主要内容,如果未能解决你的问题,请参考以下文章

跨域 ajax 不适用于移动 Safari 中的重定向

IIS HTTP重定向配置参数设置

具有重写功能的 IIS 反向代理无法处理来自我们代理到的服务器的重定向

防止 Django 模板表单中的重定向

IIS URL 重写模块:基于 QueryString 的重定向

身份验证模式=“表单”导致WCF服务中的重定向