Post 目标未收到数据 URL

Post Data is not recieved on destination URL

我曾遇到过 http://www.omsite.com to be posted on other website say http://www.hissite.com/myfolder

表格中的数据

现在,无论何时发布数据,而不是发布或获取状态代码 200,我都会获取永久重定向的 301 状态代码,因此数据未发布。

正在检查目标 URL 我从 http://www.hissite.com/myfolder to http://www.hissite.com/myfolder/ 更改了它,是的,我在 /myfolder 之后只添加了一个斜线,然后我得到了成功的响应。

我需要一些帮助来理解仅在目标末尾添加正斜杠 URL 如何使我的数据成功发布?

注意:目标网页是源网页的子域

由于同一页面的不同 url 版本上的内容被认为是重复的,因此搜索引擎在涉及重复内容问题时会相当困难,许多网站管理员 make any directory page have a trailing slash

现在任何非尾部斜线目录都重定向到斜线版本,您可能会发现 index.html、index.php 等也重定向到尾部斜线版本。

然而,这意味着服务器上有一个策略(例如使用 .htaccess 规则)强制 301 重定向并阻止您的 POST 工作。

answers here 展示了收件人如何管理它。

i need some help in understanding how just adding a forward slash at the end of destination URL made my data to get posted successfully?

发生这种情况是因为目标站点上的 myfolder 真实目录 。出于安全原因,Apache 中有一个名为 mod_dir 的模块负责此行为。

  1. 每当请求真实目录时 没有尾部斜杠 然后 mod_dir 重定向到相同的 URI 加上尾部斜杠使用 301 状态代码。
  2. 一旦 301 重定向发生 POST 数据丢失。
  3. 当你使用 http://www.hissite.com/myfolder/ 到 POST 数据时,mod_dir 没有出现,因为你的 URI 已经有一个尾部斜线,因此没有重定向,也没有丢失 POST 数据.

可以使用以下方法更改此行为:

DirectorySlash Off

但它被认为是潜在的安全风险,因为它可能会泄露目录内容。

@anubhava 在我打字时提交了他的解释,他的解释是正确的。 我可以添加更多细节:

这取决于您的服务器设置。特别是 DirectorySlash。 大约 2 年前,我曾尝试 POST 到我创建的 API 端点。

如果您没有在文件夹名称的末尾加上斜杠,服务器可以假定您所指的文件夹实际上是一个文件(它是否存在并不重要)。这就是为什么它不尝试访问其中的任何 "index" 文件以及请求似乎不起作用的原因。 DirectorySlash 设置告诉 Apache 在 URL 的末尾添加一个斜杠,如果它不是一个文件(没有扩展名),然后它将尝试在里面找到一个 "index" 文件。

另一个名为 DirectoryIndex 的设置可用于指定要搜索的 "index" 文件类型。

在为附加斜杠发出错误重定向的情况下,_POST 数据可能会丢失 - 最常见的情况是在 .htaccess 中使用了 mod_rewrite 而你没有' t 告诉它正确重定向。

简而言之,如果您的服务器没有被告知自动将斜杠添加到 URL 的末尾,它通常被视为没有扩展名的文件。

这里是 link Apache 设置和其他信息: https://httpd.apache.org/docs/2.4/mod/mod_dir.html