我们有一个自定义控件库,可以在不同的 sapui5 应用程序中使用。 对于 js 控件,这工作正常,但现在我试图让它与 xml 片段一起工作。
该库像应用程序一样部署,包含扩展 sap/ui/base/Object 的 js 文件并且工作正常。 我们通过其他应用程序调用它
sap.ui.loader.config({
paths: {
'zfiorilibrary': sLibraryPath
}
});
然后我们可以从应用程序的控制器访问它,方法是像加载 sapui5 中的任何其他对象一样加载它,并在 sap.ui.define() 的顶部声明它
现在我对库中的 xml 文件进行了相同的尝试,但它无法加载并在控制台中给出 cors 错误。
this._oAttachmentsMangerDialog = sap.ui.xmlfragment("library-AttachmentsManager", "zfiorilibrary.fragments.AttachmentsManager", this);
jquery-dbg.js:9325 Access to XMLHttpRequest at 'https://ourserver/sap/bc/ui5_ui5/sap/zfiorilibrary/fragments/AttachmentsManager.fragment.xml' from origin 'http://localhost:8080' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
当我点击 url 时,xml 加载正常
我们在加载js文件时从来不会出现cors错误。 我可以做什么来从库加载 xml 文件?
我们使用 sapui5 版本 1.71.x(始终是最新的 1.71)
Javascript 文件通过发出
<script>
请求的
no-cors
元素加载。它们可以从任何来源加载。
相比之下,XML 文件无法通过 HTML 元素(没有
<xml>
)加载,而只能通过 XMLHttpRequest
(或等效的 fetch
)加载。这些提出了 cors
请求。如果您的跨源服务器未提供必要的 CORS 标头,浏览器将发出您观察到的错误消息。