- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在我的 LINUX 机器上使用 C 语言的 TCP 套接字编程制作了一个非常简单的 Web 服务器。我从本地机器的浏览器(chrome 和 mozilla )向它发送一个 HTTP GET 请求。这个问题是当我不设置标题时
响应中Transfer-Encoding: chunked,浏览器成功显示网页。但是当我保留此 header 时,浏览器没有响应,它显示没有可用数据。
编辑:在我添加了 @RomanK 指出的 block 大小(446 字节)后,它现在适用于 Firefox。但 Chrome 变得没有响应。
这是代码
responseIndex = add(response,"HTTP/1.1 200 OK",responseIndex);
responseIndex = add(response,"Transfer-Encoding: chunked",responseIndex);
responseIndex = add(response,"Content-Type: text/html",responseIndex);
response[responseIndex++]='\r';
response[responseIndex++]='\n';
updateIndex = add(response,"446",updateIndex);
responseIndex = add(response,filebuffer,responseIndex);
response[responseIndex++]='\0';
send(clntSock, response, strlen(response), 0) ;
close(clntSock);
exit(0);
这里,add是一个函数,用于将第二个参数附加到响应中,然后附加“/r/n”。
响应是一个字符串。
responseIndex 只是一个用于跟踪当前响应长度的 int。
filebuffer是一个字符串,其中包含要发送的html文件的所有文本。
回应:
HTTP/1.1 200 OK
Transfer-Encoding: chunked
Content-Type: text/html
446 (or 1EB)
<html>
BODY
</html>
chrome给出的错误代码是:ERR_INVALID_CHUNKED_ENCODING
最佳答案
Content-Length
和分块传输编码是互斥的。
您应该省略Content-Length
,而是按照Wikipedia article在每个 block 的开头添加 block 大小。 .
或者,换句话说,您需要在该行之前以十六进制输出 block 大小
responseIndex = add(response,filebuffer,responseIndex);
编辑:请注意,您只需提供 block 的大小,而不是整个 HTTP 响应的大小。在你的情况下,它应该只是 HTML 正文的大小;例如,看起来您的样本主体的十六进制大小为 30 或 31(不确定空白)。
所以,3点:a) 使用十六进制b) 使用小写c)使用 block 的大小(在您的情况下,是主体,因为您有一个 block )。不包括 HTTP 元数据的大小。
首先使用 block 也有点值得怀疑;仅当您开始生成响应时不知道响应大小时才应使用它们。在这里,您知道开始时的响应大小,并且可以使用 Content-Length
而无需 Transfer-Encoding: chunked
。
关于c - 传输编码 : chunked-- Browser does not respond,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29284748/
如何修复 Excel VBA 中的 Not Responding 错误? 我的代码是完美的,我没有收到任何错误,但在我运行它之后,我会看到 Excel VBA 的NOT RESPONDING 顶部并且
这个问题已经有答案了: 已关闭12 年前。 Possible Duplicate: Keep app responsive during long task 在处理大型查询或长流程循环时如何避免“无响
这是我第一次遇到有人试图侵入我创建的网站。我可以做什么来阻止这些尝试? 顺便说一句,他们的 SQL 注入(inject)不可能起作用,而且我们拥有的任何数据都不能被正常使用该网站的任何人使用。 附加:
我的 java 进程停止响应。我尝试 jstack 但失败并出现以下错误。 21039: Unable to open socket file: target process not respondi
This question already has answers here: Closed 7 years ago. Possible Duplicate: Dismiss keyboard on
我不确定这是否重复,我尝试过的可能的补救措施无效。 (下面会提到) 我目前正在为我正在做的项目使用 Theme.AppCompat.NoActionBar 并且正在使用 android.support
这是一个简单的用户登录。我只是想了解这个概念。让我解释一下我的代码问题。这是我的表单: User: Password: check_login.php: Use
我正在创建一个线程,它可以控制所有程序过程消息并且不会卡住程序。我写了this code我得到了 program not responding。 有没有人有使用线程的经验可以帮助我? 最佳答案 Win
我将 Selenium 与 Python 结合使用。单击按钮时,我在 widows Python 中收到一条消息: Not responding in widows Python I have the
我有一个长时间运行的方法,必须在 UI 线程上运行。(Devex - gridView.CopyToClipboard()) 我不需要 UI 在复制时响应,我添加了启动画面,这样用户就不会感到无聊。
对于测试,使程序显示“无响应”的最简单方法是什么?中断 Windows 消息或将其置于无限循环中? 我试过一个简单的循环 while(true) 但这行不通。测试应用程序是 C# 控制台应用程序。它在
App里发生的最糟糕的事是弹出应用无响应”Application Not Responding” (ANR) 对话框.本课讲的是如何保持应用响应,避免ANR。 什么触发ANR 通常,系统会在应用
我们遇到一个客户运行我们基于 WPF 的程序的问题。他可以启动应用程序、创建新文档、在 TreeView 中导航菜单项以查看文档的不同部分、更改几乎(如果不是全部)我们的文本框值、将项目添加到列表(使
在VCL主线程中,我运行一个脚本,该脚本可能需要几分钟才能执行(这是一个还原数据库脚本)。 如果用户单击UI,则我的标题为“无响应”。 Application.ProcessMessages不起作用。
我这里有一个无意义的小脚本,我正在 MATLAB R2013b 中执行它: clear all; n = 2000; times = 50; i = 0; tCPU = tic; disp 'CPU:
我想将验证错误发送回另一个页面(添加),因此我的save操作具有以下功能: @Transactional(readOnly = false) def save(AddDomainCommand com
我正在构建一个 JavaFX 应用程序并使用 JOptionPane 来显示对话框 我遇到的问题之一是创建一个新对话框并且不在 5 秒左右关闭它会导致主 JavaFX 阶段进入“无响应”状态 在新线程
好吧,我尝试将信息从 servlet 发送到 jsp,所以我尝试使用 request.setAttribute() 和 respond.getRequestDispatcher("page.jsp")
我对代码进行排序有什么问题吗?当我打开程序时,我看到错误“程序未响应”。请检查我的代码。 void sorting(el_list **first) { el_list *newfirst =
出于测试目的,我需要编写一个程序,将著名的“应用程序未响应”消息显示在屏幕上。我不知道我怎么会激起这样的 react 。 最快、最简单的方法是什么?最好是 C/C++ 或 Java 最佳答案 在 Wi
我是一名优秀的程序员,十分优秀!