我有一个网站,其中第三方对文件执行HTTP发布 - 让我们称之为http://mywebsite/third-party-post.cfm
(这是一个ColdFusion网站)。
我想将代码移动到一个新文件 - 让我们称之为http://mywebsite/third-party-post-new.cfm
。
如果我在IIS中更改文件属性:
这会传递POST操作的表单字段,还是像这样的重定向只适用于GET?
答案 0 :(得分:2)
您无法在重定向期间传递帖子参数。 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]
上述代码将请求orignal页面并将其转换为对新页面的请求。如果仍然保留原始URL但会显示新页面。 IIS具有您可以使用的URLrewrite功能,或者如果您熟悉Htaccess和apache,则可以使用Helicon Ape http://www.helicontech.com/ape/来读取您站点的htaccess文件。
答案 1 :(得分:0)
见帖子https://stackoverflow.com/a/13628908/2482184。虽然这个问题与apache有关,但无论您使用哪个版本,IIS都是如此。还有许多其他选项可以绕过此问题。其中之一是创建/third-party-post.cfm文件并包含/third-party-post-new.cfm。您甚至可以使用新的HTML5技术更改网址而不刷新页面(请参阅http://spoiledmilk.com/blog/html5-changing-the-browser-url-without-refreshing-page/)。