【问题标题】:Post Data is not recieved on destination URL目标 URL 上未收到发布数据
【发布时间】:2017-08-13 01:05:19
【问题描述】:

我有一个场景,其中http://www.omsite.com 表格上的数据要发布到其他网站上说http://www.hissite.com/myfolder

现在,无论何时发布数据,而不是发布或获得状态代码 200,我都会获得 301 状态代码以进行永久重定向,因此数据没有发布。

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

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

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

【问题讨论】:

  • 不应该。对于站点的根目录,带有和不带有/ 的 URL 完全相同。
  • 您在某处遗漏了一些要点,添加斜线没有任何作用。
  • 让我在场景中添加更多细节......添加了一个有问题的注释
  • @Leaner 我确实检查了它的每一点,这是我所做的唯一改变......
  • 用相同的场景更新了目标 URL

标签: php .htaccess http post http-status-code-301


【解决方案1】:

当涉及到重复内容问题时,搜索引擎可能相当困难,同一页面的不同 url 版本上的内容被视为重复,许多网站管理员make any directory page have a trailing slash

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

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

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

【讨论】:

  • 这是在某些情况下实际发生的错误的详细信息 :-) 并且有不同的处理方法,但我仍然无法弄清楚为什么在 Origin 的表单操作中添加斜杠url帮助我成功发布数据,避免了301重定向!!!
【解决方案2】:

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

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

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

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

DirectorySlash Off

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

【讨论】:

  • 牛眼!!!这就是上周让我发疯的原因......感谢您推动我了解更多关于 mod_dir..Cheers Anubhava
【解决方案3】:

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

这取决于您的服务器设置。其中一个特别是 DirectorySlash。 大约 2 年前,我在尝试 POST 到我创建的 API 端点时有一个学习曲线。

如果您没有在文件夹名称的末尾加上斜杠,服务器可以假定您所指的文件夹实际上是一个文件(无论它是否物理存在都无关紧要)。这就是为什么它不尝试访问其中的任何“索引”文件以及请求似乎不起作用的原因。 DirectorySlash 设置告诉 Apache 如果它不是文件(无扩展名),则在 URL 的末尾添加一个斜杠,然后它会尝试在其中找到一个“索引”文件。

名为 DirectoryIndex 的附加设置可用于指定要搜索的“索引”文件的类型。

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-25
    • 2016-01-19
    • 2016-10-06
    • 1970-01-01
    • 2015-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多