2

错误消息是"make sure this cross-domain message is being sent to the intended domain"

此检查规则来自RSPEC-2819

作者不应在包含任何机密信息的消息中的 targetOrigin 参数中使用通配符关键字 ( *),否则无法保证该消息仅传递给预期的收件人。

我认为它的要求*不能用作targetOrigin,但是当我使用预期的域时它仍然显示警告,targetOrigin如下所示:

在此处输入图像描述

请有人告诉我如何通过此检查,

任何帮助,将不胜感激

4

2 回答 2

5

此规则仅检测是否postMessage对包含名称的对象调用方法window。源代码:PostMessageCheck.java。要绕过它,只需将您的contentWindow对象分配给不同的对象,如下所示:

var content = this.elem.contentWindow;

content.postMessage('your message', window.location.origin);
于 2019-01-22T07:53:17.070 回答
0

在 sonarQube 中遇到过类似的问题。下面的修复工作。只需摆脱直接使用窗口对象即可。

实际代码:

window.parent.postMessage("data", parenturl);

使固定:

var content=window;
content.parent.postMessage("data",parenturl);
于 2021-06-24T16:28:42.580 回答