HttpException:HTTP标头不可变

时间:2013-01-30 20:12:32

标签: dart

我无法弄清楚为什么我在Dart中收到此错误:

  

HttpException:HTTP标头不可变

我有一个HttpResponse的实例,我尝试添加一些标题:

response.outputStream.writeString(responseData);
response.headers.add('Content-Type', 'text/html');
response.outputStream.close();

如果不添加到标题中我应该怎么做?

1 个答案:

答案 0 :(得分:4)

解决起来很简单,只需确保在输出任何内容之前添加标题:

response.headers.add('Content-Type', 'text/html'); // <-- this line first.
response.write(responseData);
response.close();

我所做的就是改变线条的顺序。

原因是如果您开始输出正文,则不能再简单地修改标题(因为标题已经在线下发送了!)。这就是HTTP的工作原理。首先是头部然后是身体。

更多背景 有时,HTTP库(通常使用不同的编程语言)可能会缓冲输出数据并且不会立即刷新内容,从而导致即使在输出内容之后您也可以看似修改标题。在你的情况下,没有发生。输出似乎已经刷新了。