我有一个网页,其中有一个简单的 HTML 表单,如下所示:
<form method="POST" action="/something">
<input type="text" name="something">
<input type="submit" value="Send">
</form>
当托管此服务器可通过 IPv4 和 IPv6 访问时,有没有办法可以强制此 HTML 表单 POST 通过 IPv4 完成,而无需更改 Web 服务器?
如果我尝试1.2.3.4/something
执行该操作,则会失败,因为缺少主机标头。如果我创建一个v4.example.com
只有 IPv4 地址的子域(然后使用v4.example.com/something
),则会失败,因为该子域不会包含在 apache 配置中,也不会分配给该 vHost。
我能否通过修改 HTML 表单让客户端通过 IPv4 发送该表单?还是我必须更改 Apache 配置才能做到这一点?
答案1
作为相同的互联网连接测试,这是有缺陷的。
- 比较 v4 地址时会假设用户代理位于您期望的 NAT 后面。这会在重组其公共地址空间时降低灵活性。
- 运营商级 NAT 意味着 v4 地址可以由不知道多少个客户共享。
- 多宿主相对简单。同一个 IP 可以有通过 3 到 4 个不同 ISP 的路径。
- 如果没有 v6,则强制 v6 客户端通过 NAT64。共享资源不会提高此测试的准确性。如果有的话,它会惹恼您的用户。
- VPN 可以使流量看起来来自不同的网络。
要验证表单提交者是否与某个组织或站点相关联,请使用帐户登录或类似的标识符。
要识别连接来自何处,请查找互联网路由表或使用地理位置 API。
答案2
唯一的办法是:
将表单发送至v4.example.com
,其中仅包含您提交表单的 Web 服务器的 A 记录。
在Web服务器中,设置一个带有v4.example.com
域名的虚拟主机,或者将其v4.example.com
作为附加域添加到现有的虚拟主机。
然后您可能需要处理跨域问题。