【发布时间】:2020-04-05 00:56:21
【问题描述】:
我尝试在客户端 JavaScript 中将图像(base64 格式)绘制到画布上。不幸的是,总是出现ERR_CONNECTION_RESET 431 (Request Header Fields Too Large) 错误。
我将 base64 图像作为对节点服务器的异步 POST 请求的响应。 示例 base64 图像是:
'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAoAAAAHgCA==='
但显然更长。 Chrome 开发者控制台显示如下:
GET http://localhost:3000/'data:image/png;base64,iVBORw0KGgoAA...
net::ERR_CONNECTION_RESET 431 (Request Header Fields Too Large)
Image (async)
(anonymous) @ client.js:59
async function (async)
(anonymous) @ client.js:51
我的代码是:
setInterval(async () => {
const post_options = {
method: 'POST',
headers: {
"Content-Type": "application/json"
},
body: JSON.stringify(request)
}
const response = await fetch('/api', post_options)
const result = await response.json()
const base64_response = "'" + result['image64'] + "'"
const image = new Image()
image.onload = () => {
response_ctx.drawImage(image, 0, 0)
}
image.src = base64_response
}, 1000)
其中canvas_ctx 是画布的二维上下文,base64_response 是上述指定格式的图像。
我还应该提一下,我是 JavaScript 和 Web 开发的新手,因为我只是为我的一个项目做这件事。
【问题讨论】:
标签: javascript base64 client-side http-error