域转发导致POST http请求被解释为GET?

时间:2017-12-15 18:15:08

标签: html post http-post spring-rest

我有一个包含表单提交的html页面:

<form name="pc_request_form" action="https://coupon-liquibil.rhcloud.com/RequestPointCard" method="POST">

其中https://coupon-liquibil.rhcloud.com是承载应用程序的Openshift给出的url。这很有效。

现在,我想使用自己的“webcoupon.us”作为该应用的域名,因此我在域名注册商(Google)设置域名转发:

http://webcoupon.us **to** https://coupon-liquibil.rhcloud.com

同时,我将html文件中的表单标题更改为:

<form name="pc_request_form" action="http://webcoupon.us/RequestPointCard" method="POST">

我的问题:在此之后,每当我提交表单时,都会收到一条http错误消息:

Request method 'GET' not supported

同时,我的应用程序日志中也出现此错误消息:

09:29:25,034 WARN [org.springframework.web.servlet.PageNotFound] Request method 'GET' not supported

此错误消息(在我的应用日志中)让我相信

    http请求(表单提交)中的
  1. http://webcoupon.us 已按预期正确解析为 https://coupon-liquibil.rhcloud.com 。但是
  2. 在解析 http://webcoupon.us 之后,请求被服务器(我的应用)解释为GET,而不是预期的POST请求 - 为什么会这样?
  3. 该应用程序是在Springframework REST API中实现的。我也试过Godaddy进行域名转发。结果是一样的。的 [END]

1 个答案:

答案 0 :(得分:0)

http://webcoupon.us/RequestPointCard的POST会返回HTTP重定向响应:

HTTP/1.1 301 Moved Permanently
Location: https://app-coupondev.b9ad.pro-us-east-1.openshiftapps.com/RequestPointCard

这打破了POST,301只受到GET / HEAD的尊重。在此之后,用户代理(可能)会发出一个裸GET请求。