我看不到任何不会变成完整结构的客户端黑客攻击。你也许可以绕过它,但将它报告给 WebKit 似乎是最好的前进方式。
WebKit-bug 170640是阻止 largeImageAsyncDecodingEnabled 启用的原因。它也引起了闪烁。一旦修复,他们默认启用它。然而,这表明仍然存在问题。
从 GitHub 检索到的 HTTP 标头
如果有人决定向 WebKit 提交错误报告,这可能会有所帮助。
标准标题如下
mjpg-streamer/mjpg-streamer-experimental/plugins/output_http/httpd.h
#define STD_HEADER "Connection: close\r\n" \
"Server: MJPG-Streamer/0.2\r\n" \
"Cache-Control: no-store, no-cache, must-revalidate, pre-check=0, post-check=0, max-age=0\r\n" \
"Pragma: no-cache\r\n" \
"Expires: Mon, 3 Jan 2000 12:34:56 GMT\r\n"
然后对于实际的图像流:
mjpg-streamer-experimental/plugins/output_http/httpd.c#L466
sprintf(buffer, "HTTP/1.0 200 OK\r\n" \
"Access-Control-Allow-Origin: *\r\n" \
STD_HEADER \
"Content-Type: multipart/x-mixed-replace;boundary=" BOUNDARY "\r\n" \
"\r\n" \
"--" BOUNDARY "\r\n");
需要注意的是,WebKit 中似乎已经有一个设置/切换来启用和/或禁用 largeImageAsyncDecodingEnabled,请在此处查看。我怀疑这是否可以通过 Safari 的 UI 访问,并且在没有用户交互的情况下无法解决问题。