通过 AJAX 访问 php 文件返回 403 Forbidden
Posted
技术标签:
【中文标题】通过 AJAX 访问 php 文件返回 403 Forbidden【英文标题】:Access php file via AJAX returns 403 Forbidden 【发布时间】:2020-05-11 00:41:12 【问题描述】:创建了一个应该通过 AJAX 访问此文件的插件:
https://example.com/wp-content/plugins/stemon-mailchimp-form/assets/sm_mailchimp.php
但是它返回 403 Forbidden。
尝试将此添加到.htaccess
,但尚未成功。
<Files ~ "\wp-content\plugins\stemon-mailchimp-form\.php$">
Order allow,deny
Allow from all
</Files>
有什么建议吗?
【问题讨论】:
您首先需要弄清楚为什么会出现 403,然后再尝试解决方法此问题(正如您似乎正在做的那样)。 (顺便说一句,<Files>
指令仅匹配文件名,而不匹配文件路径。)
感谢MrWhite,您如何建议我找出403 发生的原因?谢谢
而且,假设我需要在.htaccess
中编写允许规则,我应该像这样<Files ~ "sm_mailchimp.php">
吗?
"弄清楚为什么是 403" - 也许是由 .htaccess
中的其他指令引起的?请将您的.htaccess
文件的内容添加到您的问题中。
正确。在插件目录中创建了一个.htaccess
,它起作用了!非常感谢你的帮助。已经对此失去希望了:)
【参考方案1】:
在插件子目录中创建一个 .htaccess
文件,其中包含从 mod_auth... 到 allow 的特定指令,访问该文件应该覆盖父 .htaccess
文件中的任何阻塞指令树。
例如:
<Files "sm_mailchimp.php">
Order allow,deny
Allow from all
</Files>
请注意,Order
和 Allow
指令是 Apache 2.2 指令(它们仍然适用于 Apache 2.4,但已弃用)。如果您使用的是 Apache 2.4,那么应该使用 Require all granted
而不是上述两个指令。
<Files>
容器仅与文件名匹配。此处不应指定文件路径。另请注意,这不是正则表达式匹配(尽管允许使用某些通配符)。正是 <Files ~ "filename">
中的 ~
使其成为正则表达式匹配。
请注意,如果这有效,那么它覆盖其他地方的阻塞指令(可能在父目录中的.htaccess
文件中)。也许可以在同一个地方覆盖它,而无需创建另一个 .htaccess
文件。
【讨论】:
以上是关于通过 AJAX 访问 php 文件返回 403 Forbidden的主要内容,如果未能解决你的问题,请参考以下文章
plupload 运行时在尝试访问 upload.php 时返回 403 FORBIDDEN 错误