SonarJs仍然显示有关postMessage跨域问题的警告

时间:2019-01-11 01:44:19

标签: sonarqube eslint sonarjs

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

RSPEC-2819的此检查规则

  

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

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

enter image description here

请有人告诉我如何通过这张支票,

任何帮助将不胜感激

2 个答案:

答案 0 :(得分:2)

仅当在名称中包含postMessage的对象上调用方法window时,此规则才检测。源代码:PostMessageCheck.java。要绕过它,只需将contentWindow对象分配给另一个对象,如下所示:

var content = this.elem.contentWindow;

content.postMessage('your message', window.location.origin);

答案 1 :(得分:0)

在 sonarQube 中遇到过类似的问题。下面修复工作。直接去掉使用window对象就行了。

实际代码:

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

修复:

var content=window;
content.parent.postMessage("data",parenturl);