IIS URL 重写 - 将 POST 转换为 GET

发布于 2024-11-30 15:30:20 字数 196 浏览 0 评论 0原文

在我的应用程序中,有一个客户端和一个 WCF REST 服务。为了调用某些 wcf 服务,客户端正在执行 http POST,即使该服务是 GET。

我不想对客户端或服务进行任何更改。

那么有没有一种方法可以让我将此 POST 请求转换为 GET 并将作为 POST 传入的数据添加到 URL 并调用 REST 服务。

提前致谢。

In my application there is a client and a WCf REST service. For invoking some wcf service the client is doing an http POST even though the service is a GET.

i do not want to do any changes in the client or the service.

So is there a way where i can convert this POST request to GET and add the data coming in as the POST to the URL and invoke the REST service.

Thanks in advance.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

萌无敌 2024-12-07 15:30:20

您可以使用 URL 重写来发出 3xx 重定向,该重定向将使用 GET 方法,但您将丢失所有 POST 数据。

据我所知,唯一安全的方法将 POST 请求重写到另一个自定义页面,您可以在其中:

  • 收集所有 POST 数据/变量;
  • 将它们转换为 GET 变量(组装正确的 GET 请求);
  • 问题 301(或 302)重定向到正确的 URL(它将把所有 POST 数据作为 GET 变量发送)。

这种对自定义页面的重写应该很容易——您需要检查使用了什么方法(POST 或 GET)并且仅在 POST 上调用它。其余的将在 post-to-get 脚本中处理。

所有这些复杂性的原因是 POST 和 GET 请求工作方式的差异:对于 GET,所有数据都作为 URL 的一部分发送,而 POST 使用请求正文来传输变量的数据。

You can use URL Rewrite to issue 3xx Redirect which will use GET method, but you will loose all POST data.

The only safe way known to me is to rewrite POST request to some another custom page, where you:

  • collect all POST data/variables;
  • convert them into GET variables (assemble proper GET request);
  • issue 301 (or 302) Redirect to the proper URL (it will have all POST data sent as GET variables).

Such rewrite to custom page should be easy -- you need to check what method is used (POST or GET) and only invoke it on POST. The rest will be handled in that post-to-get script.

The reason for all of this complexity is the difference in how POST and GET requests work: with GET all data is sent as part of URL while POST uses request body to transfer variable's data.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文