Salesforce Lightning CORS问题:未能在DOMWindow上执行postMessage

Salesforce Lightning CORS问题:未能在DOMWindow上执行postMessage,cors,salesforce,cross-domain,postmessage,salesforce-lightning,Cors,Salesforce,Cross Domain,Postmessage,Salesforce Lightning,简介:我们有一个Salesforce lightning应用程序,它在开发组织中运行良好,但是一旦我们创建了一个托管包并将其安装到其他组织中,如果出现此CORS错误,则失败: 未能在“DOMWindow”上执行“postMessage”:提供的目标源(')不执行 与收件人窗口的来源不匹配 (') 以下是在一个简单的lightning应用程序中重现该问题的步骤 1) 使用以下公式在Opportunity上创建自定义按钮。 “/apex/namespace\uuuu testHelloVFpage”

简介:我们有一个Salesforce lightning应用程序,它在开发组织中运行良好,但是一旦我们创建了一个托管包并将其安装到其他组织中,如果出现此CORS错误,则失败:

未能在“DOMWindow”上执行“postMessage”:提供的目标源(')不执行 与收件人窗口的来源不匹配 (')

以下是在一个简单的lightning应用程序中重现该问题的步骤

1) 使用以下公式在Opportunity上创建自定义按钮。 “/apex/namespace\uuuu testHelloVFpage” 将此按钮命名为testHello。在Opportunity pagelayout中拖放此按钮以使用它

2) 使用下面的代码创建一个VisualForce页面,并将其命名为testHelloVFpage

<apex:page sidebar="true" showHeader="true" standardController="Opportunity">
    <apex:includeLightning />
    <center><div id="lightning" style="margin-left:1%;max-width:75%;margin-bottom:2%;"/></center>
<script >
    $Lightning.use("namespace:testHelloEsignPageApp", function() {
        $Lightning.createComponent("namespace:testHelloEsignLC",
        {},
        "lightning",
        function(component) {window.$Force = sforce;});
    });

</script>
</apex:page>
)确实如此
与收件人窗口的来源不匹配
(')

typeError-错误未定义

未捕获的TypeError:无法读取未定义的属性“split” 显示错误文本时(lightning.out.delegate.js?v=1558631590920:70) at lightning.out.delegate.js?v=1558631590920:178 在XMLHttpRequest.xhr.onreadystatechange(lightning.out.delegate.js?v=1558631590920:112)

尝试了以下操作:

  • 检查是否缺少任何名称空间,这不是问题
  • 尝试在navigateToURL部分中对源URL进行硬编码以从组件打开页面-失败
  • 尝试跳过组件中为导航而触发的任何类型的事件,并使用window.open,但未执行任何操作
  • 尝试通过手动添加ID在URL中打开此页面以绕过调用组件(在UI中使用BluSign组件进行签名),但出现相同错误
  • 尝试为用户启用开发模式
    Lightning组件和VF页面来自不同的域。VF页面和Lightning组件相互通信的方式是使用window.postMessage,其中必须指定目标域。我怀疑,在您提供的代码片段中,Salesforce在后台使用window.postMessage来设置顶级窗口的属性,而您使用的是托管包。如前所述,您可能希望在代码中使用window.postMessage显式处理此问题

    <aura:application access="GLOBAL" extends="ltng:outApp">
        <aura:dependency resource="namespace:testHelloEsignLC"/>
    </aura:application>
    
    <aura:component implements="force:appHostable,flexipage:availableForAllPageTypes,flexipage:availableForRecordHome,force:hasRecordId,forceCommunity:availableForAllPageTypes,force:lightningQuickAction" 
                    access="global" >
    ########### This is a Test Component ###############
        <br></br>
        ***********   Hello ESign *************
    </aura:component>