You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 19:59:55