当 url 包含幽灵词 “- H” 时,如何修复 fopen 意外的 400 错误请求错误?

发布于 2025-01-14 12:36:19 字数 534 浏览 0 评论 0原文

大家好,我有一个超级奇怪的问题:

我在 ubuntu18.04 上使用 php7.4,我想使用 fopen 获取我的远程资源。

这是示例代码:

// That's say remote file name: "- h.zip"
fopen('http://127.0.0.1/- h.zip', 'rb', false);

嗯,我得到了我想要的。

但是,奇怪的是,如果我将 h 更改为 H,如下所示:

// That's say remote file name: "- H.zip"
fopen('http://127.0.0.1/- H.zip', 'rb', false);

Got 400 bad request!

有什么想法吗?

everyone, I have a super werid problem:

I'm using php7.4 on ubuntu18.04, and I want to fetch my remote resource using fopen.

This is sample code:

// That's say remote file name: "- h.zip"
fopen('http://127.0.0.1/- h.zip', 'rb', false);

Well, I got what I wanted.

But, the weird thing is, if I change h to H, like below:

// That's say remote file name: "- H.zip"
fopen('http://127.0.0.1/- H.zip', 'rb', false);

Got 400 bad request!

Any ideas?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

深爱不及久伴 2025-01-21 12:36:19

尝试设置这样的编码函数:

function encodeURI($URI)
{
    return str_replace(array('%', '^', '+', '{', '[', '}', ']', '"', '|', '\\', '<', '>', ' '),
        array('%25', '%5E', '%2B', '%7B', '%5B', '%7D', '%5D', '%22', '%7C', '%5C', '%3C', '%3E', '%20'), $URI);
}

然后:

$url = encodeURI('http://127.0.0.1/- H.zip');
fopen($url, 'rb', false);

参考

try to set an encode function like this:

function encodeURI($URI)
{
    return str_replace(array('%', '^', '+', '{', '[', '}', ']', '"', '|', '\\', '<', '>', ' '),
        array('%25', '%5E', '%2B', '%7B', '%5B', '%7D', '%5D', '%22', '%7C', '%5C', '%3C', '%3E', '%20'), $URI);
}

and then:

$url = encodeURI('http://127.0.0.1/- H.zip');
fopen($url, 'rb', false);

Refrence

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文