我希望我的 godaddy 子域名重定向到我在 Google Cloud 上的 API 服务器。
添加了子域名,进行了重定向,但问题是 POST 请求以 GET 请求的形式到达我的网络服务器。
没有找到任何关于如何让 godaddy 按原样转发请求的文档
答案1
为了将请求直接传递到服务器,您应该使用 DNS A 记录来配置站点。重定向是一种 HTTP 级别机制,它会导致 POST 信息丢失。
答案2
这里有一个混淆。GoDaddy 提供多种服务,但您混淆了其中两种:
- DNS。
- HTTP 重定向。
使用 DNS,当您将域(或子域)指向 IP 地址时,客户端会在其浏览器中输入该域,浏览器会查找 IP 地址并将请求发送到该 IP 地址(您的 Web 服务器)。
使用 HTTP 重定向(GoDaddy 称之为转发),客户端输入域名,返回的 IP 地址是GoDaddy 的web 服务器的 IP 地址。它们将请求发送到该 IP 地址,然后该 web 服务器会以 302 重定向响应进行响应,告知客户端向您的 IP 地址发出新请求。
由于原始 HTTP RFC 存在歧义/误解,即使原始请求是 POST 请求,后续请求也始终是 GET 请求。为了消除这种歧义,较新的 HTTP RFC 添加了 303 和 307 重定向代码。我不知道 GoDaddy 是否在转发时提供这些代码作为选择。
要解决您的问题,请不要使用转发。转到 GoDaddy 网络界面中的区域编辑器,并将您的子域名直接指向您的 IP 地址。(如果“Google Cloud”需要指向他们控制的域名的 CNAME 条目,您也可以在区域编辑器中执行此操作。)