Failed to execute 'postMessage' on 'DOMWindow': The target origin provided ('http://eciphub.xiamenair.com.cn') does not match the recipient window's origin ('null').
时间: 2024-01-08 10:02:33 浏览: 134
这个错误是因为您正在使用 `postMessage` 函数跨域发送消息,但目标窗口的来源与您提供的目标来源不匹配。在使用 `postMessage` 函数时,需要确保消息发送方和接收方的来源或域名匹配。
在您的情况下,目标窗口的来源为 `null`,这表示该窗口的来源不是一个有效的 URL。您需要确保目标窗口已被正确设置,并且其来源是一个有效的 URL。如果您无法解决问题,请提供更多代码和详细信息,以便我能够帮助您更好地解决问题。
相关问题
报错HyShipTruck.vue:17 Failed to execute 'postMessage' on 'DOMWindow': The target origin provided ('http://example.com') does not match the recipient window's origin
这个错误是由于目标窗口的源与发送消息的窗口的源不匹配导致的。在使用 `postMessage` 方法时,需要确保目标窗口的源与当前窗口的源是一致的。也就是说,你需要将 `http://example.com` 替换为目标 iframe 窗口的源,例如 `http://localhost:8080`。
在你的代码中,你可以这样修改:
```javascript
const iframe = document.querySelector('iframe');
iframe.contentWindow.postMessage('Hello, World!', 'http://localhost:8080');
```
这里假设你的 iframe 所在的页面的源为 `http://localhost:8080`,如果不是,请将其替换为相应的源。
同时,你需要在嵌入的网页中监听 `message` 事件,并校验消息的来源,如下所示:
```javascript
window.addEventListener('message', event => {
if (event.origin !== 'http://localhost:8080') return;
console.log(event.data); // 'Hello, World!'
});
```
同样,这里的 `http://localhost:8080` 也需要替换为发送消息的窗口的源。
Failed to execute 'postMessage' on 'DOMWindow': The target origin provided ('https://localhost:9000') does not match the recipient window's origin ('https://10.65.196.252'). 报错
这个错误通常是由于跨域请求引起的。在前端页面中,如果一个页面从一个域名(比如https://localhost:9000)向另一个域名(比如https://10.65.196.252)发送请求,就会出现跨域问题。这是浏览器的安全策略所致。
为了解决这个问题,你需要在后端服务器上配置跨域请求的允许。具体来说,你需要在服务器端设置响应头,允许跨域请求。在 Node.js 中,可以使用 cors 中间件来实现。
另外,如果你是在前端页面中发送跨域请求,你也可以使用 JSONP 或者设置代理的方式来解决跨域问题。不过这些方法都有各自的限制和注意事项,需要根据具体情况选择合适的解决方案。
阅读全文