Javascript 尝试将base64图像绘制到画布时出现HTTP错误431
我尝试用客户端JavaScript将图像(base64格式)绘制到画布上。不幸的是,Javascript 尝试将base64图像绘制到画布时出现HTTP错误431,javascript,base64,client-side,http-error,Javascript,Base64,Client Side,Http Error,我尝试用客户端JavaScript将图像(base64格式)绘制到画布上。不幸的是,ERR\u CONNECTION\u RESET 431(请求头字段太大)错误总是存在的 我将base64映像作为对节点服务器的异步POST请求的响应。 base64映像的一个示例是: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAoAAAAHgCA===' 但显然,Muuuch的时间更长了。Chrome开发控制台显示: GET http://localhost
ERR\u CONNECTION\u RESET 431(请求头字段太大)
错误总是存在的
我将base64映像作为对节点服务器的异步POST请求的响应。
base64映像的一个示例是:
'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAoAAAAHgCA==='
但显然,Muuuch的时间更长了。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(异步()=>{
const post_选项={
方法:“POST”,
标题:{
“内容类型”:“应用程序/json”
},
正文:JSON.stringify(请求)
}
const response=wait fetch('/api',post_选项)
const result=await response.json()
const base64_response=“”+结果['image64']+“”
常量图像=新图像()
image.onload=()=>{
响应\u ctx.drawImage(图像,0,0)
}
image.src=base64\u响应
}, 1000)
其中,canvas_ctx
是画布的2d上下文,base64_response
是上述指定格式的图像
我还应该提到,我是JavaScript和Web开发的新手,因为我只为我的一个项目这么做。
image.src
接受一个包含URL的字符串。看起来您试图使用一个包含数据URL的字符串,但是您在该字符串的内容中添加了引号,这使得它包含的URL无效。431错误是由于浏览器试图通过假定URL是站点本地资源的名称,然后从服务器请求它来理解现在已损坏的URL
为了解决这个问题
const base64_response = "'" + result['image64'] + "'"
应该是
const base64_response = result['image64']
我以前试过这个,但实际上它抛出了错误:
net::ERR\u无效\u URL
。URL只是http://localhost:3000/data:image/png;base64,iVB…
那么,你知道为什么这是无效的吗?好的,我发现了问题:我的后端服务器在base64字符串的末尾没有正确的=
填充。我只是用一个错误换另一个错误。