我有一个方案,其中http://www.omsite.com上的表单上的数据将在其他网站上发布http://www.hissite.com/myfolder
现在,无论何时发布数据,而不是发布或获取状态代码200,我都会获得301状态代码以进行永久重定向,因此数据未发布。
检查目标网址我将其从http://www.hissite.com/myfolder更改为http://www.hissite.com/myfolder/,是的,我在/ myfolder之后只添加了一个斜杠,并且我得到了成功的响应。
我需要一些帮助,了解如何在目标网址末尾添加正斜杠,以便我的数据成功发布?
注意:目标网页是源网页的子域
答案 0 :(得分:3)
我需要一些帮助,了解如何在目标网址末尾添加正斜杠,以便我的数据成功发布?
这种情况正在发生,因为目标网站上的myfolder
是真实目录。由于安全原因,Apache中有一个名为mod_dir
的模块负责此行为。
mod_dir
会使用301状态代码重定向到相同的URI和尾部斜杠。http://www.hissite.com/myfolder/
POST数据时,mod_dir
没有进入图片,因为您的URI已经有一个尾部斜杠,因此没有重定向,也没有丢失POST数据。可以使用以下方式更改此行为:
DirectorySlash Off
但它被认为是潜在的安全风险,因为它可能会泄露目录内容。
答案 1 :(得分:2)
由于搜索引擎可能相当困难,因为重复内容问题,同一页面的不同网址版本上的内容被视为重复,许多网站管理员make any directory page have a trailing slash。
现在任何非尾随斜杠目录都会重定向到斜杠版本,您可能会发现index.html,index.php等也会重定向到尾部斜杠版本。
但这意味着服务器上有一个策略(例如.htaccess规则)强制301重定向并阻止POST工作。
有answers here显示收件人如何管理它。
答案 2 :(得分:1)
@anubhava在我打字的时候提交了他,他的解释是正确的。 我可以添加更多细节:
这取决于您的服务器设置。一个特别是DirectorySlash。 大约两年前,我有一个学习曲线试图POST到我创建的API端点。
如果您没有在文件夹名称的末尾加上斜杠,服务器可以认为您所指的文件夹实际上是一个文件(如果它实际存在与否则无关紧要)。这就是为什么它没有尝试访问任何"索引"在其中的文件以及为什么请求似乎不起作用。 DirectorySlash设置告诉Apache如果URL不是文件(没有扩展名),则在URL的末尾添加斜杠,然后通过这样做,它将尝试查找"索引"文件里面。
另一个名为DirectoryIndex的设置可用于指定" index"的类型。您要搜索的文件。
如果为斜杠的附加发出了错误的重定向,则_POST数据可能会丢失 - 最常见的情况是在.htaccess中使用mod_rewrite并且您没有告诉它正确重定向。
简而言之,如果您的服务器没有被告知自动将斜杠添加到URL的末尾,则通常将其视为没有扩展名的文件。
这里是Apache设置和其他信息的链接: https://httpd.apache.org/docs/2.4/mod/mod_dir.html