使用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傳遞網域)
為了安全起見,我使用「無」讓範例保持簡單,並顯示
安全性不是問題的原因。
若為assetId,請使用"urn:aaid:aem:aaaaaaa-bbbb-cccc-dddd-eeeeeee" (有效且核准的assetID)
使用產生回應時,我會在第157行看到:
讓origin = window.location.origin;
這會導致您從縮圖要求中看到的錯誤
第160行及第174行資訊清單請求中,因為
未從傳遞伺服器提供window.location.origin
"https://delivery-pxxxxx-eyyyyyyy.adobeaemcloud.com",但來自您自己的
webserver (如預期)。 應該是'let
origin="https://delivery-pxxxxx-eyyyyyy.adobeaemcloud.com" '或
無論與請求一併提交的傳遞伺服器為何。
這是錯誤嗎? 建議事項?
解決方法 resolution
您看到的是預期的情形:
·視訊播放器傳送作業傳回的程式碼是固定的
包含的HTML範本
讓origin = window.location.origin;
…擷取(${origin}/adobe/assets/…)
它會特意假定轉譯自相同的主機
將為串流提供服務 — 即傳送階層(適用於您的測試貯體)
那會是https://delivery-pxxxxx-eyyyyyy.adobeaemcloud.com)。
·當您從Swagger的「Try it」面板執行該程式碼片段時(該面板
在developer.adobe.com上執行)或貼到您自己的網站,
window.location.origin不再等於傳遞主機。 縮圖
因此,和資訊清單擷取會移至錯誤來源,而404/
CORS-fail。
·傳遞服務本身的行為正確;問題為
僅使用執行範例的位置。 因為/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,以便
來源會以硬式編碼撰寫給該主機。