使用OpenAPI的DM问题 — 视频播放器容器API
使用具有开放API函数[ 0]的DynamicMedia,并使用返回的代码在未经更改的情况下显示外部网站中的查看器时,代码会生成格式错误的URL以获取视频详细信息,并且无法正常工作。
描述 description
描述 :当我在此处获取文档时:
https://developer.adobe.com/experience-cloud/experience-manager-apis/api/stable/assets/delivery/#operation/videoPlayerDelivery
并使用右侧的请求/响应窗口
文档,用于测试视频资产并让其返回代码
我认为我可以重现以下担忧:
对于存储桶,我使用:"delivery-pxxxxx-eyyyyyy"(激活的DMwOA投放域)
为了安全起见,我使用“none”来简化示例并显示
安全不是问题的原因。
对于assetId,我使用“urn:aaid:aem:aaaaaaaa-bbbb-cccc-dddd-eeeeeee”(有效并批准的资产ID)
使用生成响应时,我看到第157行:
let origin = window.location.origin;
其中会导致您从缩略图请求中看到的错误
第160行及第174行清单要求
未从投放服务器提供window.location.origin
"https://delivery-pxxxxx-eyyyyyyy.adobeaemcloud.com",但来自您自己的
webserver(按预期)。 应该是“让”
origin="https://delivery-pxxxxx-eyyyyyy.adobeaemcloud.com" '或
随请求一起提交的投放服务器。
这是错误吗? 建议是什么?
解决方法 resolution
您看到的内容符合预期:
·视频播放器交付操作返回的代码是固定的
包含的HTML模板
let origin = window.location.origin;
…正在提取(${origin}/adobe/assets/…)
它特意假定正在从同一主机渲染它,
将为流提供服务 — 即交付层(适用于您的测试存储桶)
https://delivery-pxxxxx-eyyyyyy.adobeaemcloud.com)。
·从Swagger的“Try it”(尝试)面板执行该代码片段时,
developer.adobe.com)或将其粘贴到您自己的网站中,
window.location.origin不再等于投放主机。 缩略图
因此,清单获取到错误的源,404/
CORS失败。
·交付服务本身的行为是正确的;问题是
仅使用执行示例的位置。 因为/play是iframe
方便包装器,当在外部运行时,它无法识别正确的主机。
投放域。
测试或嵌入品牌播放器的推荐方法:
-
直接调用清单,绕过/play:
· HLS /adobe/assets/{assetId}/manifest.m3u8
· DASH /adobe/assets/{assetId}/manifest.mpd
-
将该URL馈送到您自己的Video.js / hls.js / dash.js实例。
(请参阅交付API文档:交付API。)
如果您必须继续使用/play ,则需要从托管iframe
delivery-pxxxxx-eyyyyy域或调整生成的HTML,以便
原始地址将硬编码到该主机。