javascript - 尝试在 JS 中解码已用 Java 编码的 Base64 时出现 "The string to be decoded is not correctly encoded "错误

标签 javascript java websocket stomp sockjs

我在尝试将一些数据从 Java 传递到 JS 时遇到问题。 原始数据的类型为byte[]

在我使用的 Java 端:

byte[] data = some_data;
return Base64.getEncoder().withoutPadding().encodeToString(data)

在 JS 方面我尝试使用:

atob(b64Data)

当我这样做时,我遇到了主题错误:

DOMException: Failed to execute 'atob' on 'Window': The string to be decoded is not correctly encoded.

注意:删除 .withoutPadding() 会产生相同的结果。

我的问题是,如何修改代码以使错误不再出现?

最佳答案

看来问题出在 Spring 端通过 WebSocket/SockJS 的 STOMP 客户端,而不是编码数据本身。

虽然数据是从带有签名的方法发送的 公共(public)字符串 getDataForExcelFile 通过 WebSocket 得到的结果如下所示:

FrameImpl {command, headers, ack, binaryBody, body, (...) } 所以而不是 atob(b64Data) 我需要使用atob(b64Data.body)

关于javascript - 尝试在 JS 中解码已用 Java 编码的 Base64 时出现 "The string to be decoded is not correctly encoded "错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56237737/

相关文章:

Golang 一对一聊天

javascript - 如何在多个 switch 案例中使用用 let 声明的变量名?

javascript - Angular - CDN 引用作品,本地 min 文件没有

javascript - 后续的 POST 不会更新弹出窗口中的内容

java - Mockito stub 方法以返回类的所有实例的值

amazon-web-services - 在 AWS Application Load Balancer 上使用 Go 时,WebSocket 连接失败并出现 301

javascript - 通过搜索标签流式传输 Twitter,然后通过官方推特流式传输

java - 获取 Java TimeZone 的缩写?

java - 他们是让子类使用父类中创建的变量的一种方法吗?

php - 是否可以在 Ratchet 连接中存储额外的变量