Salesforce Lightning CORS问题:未能在DOMWindow上执行postMessage
简介:我们有一个Salesforce lightning应用程序,它在开发组织中运行良好,但是一旦我们创建了一个托管包并将其安装到其他组织中,如果出现此CORS错误,则失败: 未能在“DOMWindow”上执行“postMessage”:提供的目标源(')不执行 与收件人窗口的来源不匹配 (') 以下是在一个简单的lightning应用程序中重现该问题的步骤 1) 使用以下公式在Opportunity上创建自定义按钮。 “/apex/namespace\uuuu testHelloVFpage” 将此按钮命名为testHello。在Opportunity pagelayout中拖放此按钮以使用它 2) 使用下面的代码创建一个VisualForce页面,并将其命名为testHelloVFpageSalesforce 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”
<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>