Autodesk Viewer 7.95版本XHR请求异常跳转至localhost问题
2024年2月16日更新
此问题仅出现在最新版本7.95的Viewer中,版本≤7.94时一切正常。留此帖供APS技术支持查看。
在自有网站使用Autodesk Viewer时,Viewer发起的XHR请求目标从/derivativeservice/v2/regions/eu/manifest/documentId突然跳转到localhost/derivativeservice/v2/regions/eu/manifest/documentId,而非Autodesk服务器,排查数小时未找到原因。
已尝试的排查操作:
- 修改Viewer配置中的
env变量(prod、dev等) - 确保documentId前已添加
urn:前缀 - 切换至未改动过的主分支后,问题仍出现
- 问题在Docker容器中同样存在
以下是我的代码:
import type APS from "forge-apis"; import { useEffect, useRef } from "react"; export default function useViewerInitializer( token: APS.AuthToken, versionIds: string[] ) { const viewerRef = useRef<Autodesk.Viewing.AggregatedView | null>(null); useEffect(() => { const initializeViewer = ( options: Autodesk.Viewing.AggregatedViewInitOptions ) => { return new Promise<void>((resolve, reject) => { Autodesk.Viewing.Initializer(options, () => resolve()); }); }; const loadDocument = (documentId: string) => { return new Promise<Autodesk.Viewing.Document>((resolve, reject) => { Autodesk.Viewing.Document.load( documentId, (doc) => resolve(doc), (errorCode, errorMsg, messages) => reject({ errorCode, errorMsg, messages }) ); }); }; var options = { getAccessToken: ( onSuccess: (accessToken: string, expiresIn: number) => void ) => { onSuccess(token.access_token, token.expires_in); }, }; const init = async () => { if (token) { try { var htmlDiv = document.getElementById("forgeViewer"); if (!htmlDiv) { throw new Error("Viewer container is missing."); } await initializeViewer({ viewerConfig: options }); viewerRef.current = new Autodesk.Viewing.AggregatedView(); await viewerRef.current.init(htmlDiv, { viewerConfig: options }); console.log(versionIds); const versionIds64 = versionIds.map( (vid) => "urn:" + Autodesk.Viewing.toUrlSafeBase64(vid) ); const docs = await Promise.all( versionIds64.map((documentId) => loadDocument(documentId)) ); const nodes = docs.map((doc) => doc.getRoot().search({ type: "geometry" }) ); viewerRef.current.setNodes(nodes[0], {}); } catch (error) { console.error("Error init:", error); } } }; init(); }, [token, versionIds]); return { viewerRef }; }
感谢您的协助。
内容的提问来源于stack exchange,提问作者FunkyPenguin
相关产品推荐
相关产品推荐

