gpt4 book ai didi

php - HTML 页面上的 preg_replace 给出 net::ERR_INVALID_CHUNKED_ENCODING

转载 作者:行者123 更新时间:2023-11-28 01:39:51 25 4
gpt4 key购买 nike

我有一个简单的 curl 调用,它从服务器检索 HTML 页面,然后 preg_replace() 在页面中插入一些内容,然后将结果回显给浏览器。

我注意到,如果 curl 试图从中获取 HTML 页面的 HTTP 服务器使用标题 'Transfer-Enoding: chunked',html 输出将以某种方式编码(我注意到一些奇怪的signs) 和 preg_replace() 调用将完成这项工作,但浏览器只会得到 ERR_INVALID_CHUNKED_ENCODING 而不会加载页面。一定有一种方法可以在不弄乱分块编码的情况下替换页面的一部分吗?

最佳答案

分块传输编码是 HTTP 1.1 的一项功能,服务器在开始发送数据时不知道资源的大小,因此它向客户端发送一系列“ block ”,每个 block 前面都有大小( block 的十六进制字节数)。

唉,如果你插入数据到一个 block 中,当你将它发送到浏览器时,你也必须改变 block 的大小。当然,或者,您可以获得完整的东西,进行替换并在一个单独的 block (甚至没有 block )中发送整个响应。

一个正确的 HTTP 1.1 客户端应该能够解码这些 block ,并且一个正确的 HTTP 1.1 服务器应该发送一系列合法的 block (一个有点常见的服务器端错误是遗漏了最后的零大小的 block )。

请在此处查看规范:https://www.rfc-editor.org/rfc/rfc7230#section-4.1

关于php - HTML 页面上的 preg_replace 给出 net::ERR_INVALID_CHUNKED_ENCODING,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26798363/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com