搞了几个微服务,各自都有后端数据和前端页面,不同服务都需要获取主服务提供的 JWT 令牌信息用于后端的用户鉴权。由于主服务和各个微服务之间都是配置为不同的端口,属于跨域页面之间的信息传递,可以使用 window.postMessage 方法安全地实现跨源通信。
1. 语法:
1.1. 发送方调用
otherWindow.postMessage(message, targetOrigin, [transfer])
名称
说明
otherWindow
窗口的引用,如全局 window 对象、 iframe.contentWindow、window.open 的返回值
message
发送的信息,值为字符或数据对象
targetOrigin
限定可以接收 message 的窗口范围,值为一个 URL 或者字符串 *,* 代表无限制,要慎用;设置为一个 URL 时,则只有与此 URL 同域的窗口才能接收到 message 消息
transfer
可选参数,没用过
postMessage 的浏览器兼容性请点击 这里 查看,mozilla 官方文档点 这里。
1.2. 接收方监听
window.addEventListener("message", receiveMessage, false);
function receiveMessage(event) {
// 可以通过 origin 控制只接收特定源的消息
var origin = event.origin
if (origin !== "ht