3 dart
我不明白为什么我在 Dart 中遇到这个错误:
HttpException: HTTP 标头不可变
我有一个 HttpResponse 实例,我尝试向其中添加一些标头:
response.outputStream.writeString(responseData);
response.headers.add('Content-Type', 'text/html');
response.outputStream.close();
Run Code Online (Sandbox Code Playgroud)
如果不添加到标题,我该怎么办?
解决起来很简单,只需确保在输出任何内容之前添加标题:
response.headers.add('Content-Type', 'text/html'); // <-- this line first.
response.write(responseData);
response.close();
Run Code Online (Sandbox Code Playgroud)
我所做的就是改变行的顺序。
原因是,如果您开始输出正文,则不能再简单地修改标头(因为标头已经通过网络发送了!)。这就是 HTTP 的工作原理。首先是标题,然后是正文。
更多背景: 有时 HTTP 库(通常使用不同的编程语言)可能会缓冲输出数据并且不会立即刷新内容,从而导致即使在输出某些内容之后您似乎也可以修改标头的情况。在你的情况下,这不会发生。输出似乎已经刷新。