【问题标题】:After adding IP restriction I get a '403 error' for get_file_contents添加 IP 限制后,get_file_contents 出现“403 错误”
【发布时间】:2018-01-04 11:30:46
【问题描述】:

我有以下代码来确定图像是否为 SVG,如果是则显示源(然后可以使用 CSS 为 SVG 着色):

if (strpos('url_to_an_image', '.svg') !== false) {
    echo file_get_contents('url_to_an_image'); 
} else {
    echo '<img src="url_to_an_image" />';
}

这工作正常,直到我在 htaccess 中添加 IP 限制时收到以下错误:

file_get_contents(http://example.com/images/icons/icon-email.svg):打开流失败:HTTP 请求失败! HTTP/1.1 403 禁止

我已经尝试过建议欺骗真实浏览器请求的解决方案;他们不工作。

是否有另一种解决方案,或者我可以用来显示 SVG 的另一种方法?

【问题讨论】:

  • 您在哪里以及如何申请ip restriction
  • 在我的 htaccess 文件中
  • 也许你忘了允许自己的IP?当文件位于您的系统上时,为什么还要使用 URL?使用文件路径,没有 IP 限制。
  • 我们能看到使用的htaccess文件规则吗?

标签: php ip-restrictions


【解决方案1】:

我遇到了同样的问题,终于知道发生了什么。我的 VPS 提供商在放入大量“允许来自”IP 地址后,在 .htaccess 中放入了“全部拒绝”。

他们这样做是因为网站上的一次攻击。

【讨论】:

    【解决方案2】:

    您收到 403 错误是因为 php 似乎没有打开此文件的权限。您阻止 IP 的确切代码是什么? 当 URL 在你自己的服务器上时,不要使用它,只使用绝对路径。

    【讨论】:

    • 谢谢,因为我用的是全路径!
    • 不客气。使用路径而不是 URL 始终是最好的方法,因为您的页面也可以在不同的域或服务器上运行,而无需进行重大更改。
    • 是的,我使用的是表达式引擎 cms,它实际上是一个返回完整 url 的标签,所以我一开始没有意识到。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-22
    • 1970-01-01
    相关资源
    最近更新 更多