带有Base64字符串的Json Request URL

时间:2016-09-09 15:36:11

标签: javascript json http base64 todataurl

我有一个reader.readAsDataURL(file)编码为base64字符串的图像。 我也用过     var imageBlob = ImageDataUrl.substring(ImageDataUrl.indexOf(",") + 1); 删除data:image/png;base64,部分。

现在我必须使用json请求发送base64字符串 var link = "http://localhost:9002/AppAPI/rest/app/uploadImage?image="+imageBlob;

但邮递员没有收到任何回复,我的猜测是base64字符串中的某些字符会影响Http请求网址。

请问有什么方法可以解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

GET绝对不是上传图片时使用的正确方法。 GET must be both idempotent and safe(即可重复和只读,没有副作用)。事实上,RFC 7231 4.2.1明确警告安全方法执行基于查询字符串参数的副作用操作:

  

例如,它是      基于Web的内容编辑软件常用于在其中使用操作      查询参数,例如" page?do = delete"。如果这样的目的      资源是执行不安全的操作,然后资源所有者必须      使用安全设备访问该操作时禁用或禁止该操作      请求方法。

对于图像上传,您可能希望执行PUT,其中图像内容位于请求正文中,而不是查询字符串(因此无需对其进行base64编码)。将图像内容放在查询字符串中不太可能正常工作。大多数服务器对URI长度施加限制,除了最小的base64编码图像之外,几乎肯定会超过这个限制。根据{{​​3}},当URI太长时,服务器必须向客户端发送414响应,但如果有不合规的服务器忽略该服务器,我不会感到惊讶要求。

您可能需要转义base64编码字符串末尾的=符号,但我建议完全删除base64编码的查询字符串参数。