查看器的XMLHttpRequest错误
问题描述:
我使用以下HTML文件测试Autodesk Forge的无头观察器。测试网址如下所示: http://localhost:8080/HeadlessViewer.html?token={{Bearer}}&urn={{base64URN}}查看器的XMLHttpRequest错误
令牌有scope = data:read,urn是base64格式。
<html>
<head>
<meta name="viewport" content="width=device-width, minimum-scale=1.0, initial-scale=1, user-scalable=no" />
</head>
<body>
<div id="MyViewerDiv"></div>
<!-- The Viewer JS -->
<script src="https://developer.api.autodesk.com/viewingservice/v1/viewers/three.min.js?v=v2.10.*"></script>
<script src="https://developer.api.autodesk.com/viewingservice/v1/viewers/viewer3D.js?v=v2.10.*"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
<!-- Developer JS -->
<script>
function getParameterByName(name, url) {
if (!url) url = window.location.href;
name = name.replace(/[\[\]]/g, "\\$&");
var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"),
results = regex.exec(url);
if (!results) return null;
if (!results[2]) return '';
return decodeURIComponent(results[2].replace(/\+/g, " "));
}
function initViewer(token, urn) {
var viewerApp;
var options = {
env: 'AutodeskProduction',
accessToken: token
};
var documentId = atob(urn); // 'urn:<YOUR_URN_ID>';
Autodesk.Viewing.Initializer(options, onInitialized);
function onInitialized() {
viewerApp = new Autodesk.Viewing.ViewingApplication('MyViewerDiv');
viewerApp.registerViewer(viewerApp.k3D, Autodesk.Viewing.Viewer3D);
viewerApp.loadDocument(documentId, onDocumentLoaded);
}
function onDocumentLoaded(lmvDoc) {
var modelNodes = viewerApp.bubble.search(av.BubbleNode.MODEL_NODE); // 3D designs
var sheetNodes = viewerApp.bubble.search(av.BubbleNode.SHEET_NODE); // 2D designs
var allNodes = modelNodes.concat(sheetNodes);
if (allNodes.length) {
viewerApp.selectItem(allNodes[0].data);
if (allNodes.length === 1) {
alert('This tutorial works best with documents with more than one viewable!');
}
} else {
alert('There are no viewables for the provided URN!');
}
}
}
$(document).ready(function() {
var url = window.location.href,
token = getParameterByName('token', url),
urn = getParameterByName('urn', url);
initViewer(token, urn);
});
</script>
</body>
</html>
然而,它停止在异常XMLHttpRequest.responseText。请参阅附件图片:Error image
答
我试着用你的代码替换“accessToken:<>”和“var documentId = <>”,并且工作正常。看你的代码,我认为问题可能出在以下行:
var documentId = atob(urn); // 'urn:<YOUR_URN_ID>';
的atob功能解码字符串,这意味着它不会对Base64编码。但documentId应该是这样的:
var documentId = 'urn:c29tZSByYW5kb20gd29yZHMgaGVyZQ==';
请确保documentId适当地形成。
最后,请注意Viewer requires URL Safe encoding。考虑在服务器上进行编码(更安全地传输)或在客户端进行编码,see this answer。
+0
var documentId ='urn:'+ urn;我不应该解码字符串,但要保持Base64。这就是XMLHttpRequest无法获取响应内容的原因。谢谢。 –
你可以在隐身/私人浏览器窗口上重试吗?应该避免本地缓存。此外,除非您有理由,否则请考虑使用viewer3D.min.js(较小) –
我使用隐身模式并具有相同的错误。我打算使用viewer3D.js来调试Viewer代码,以查看这个XMLHttpRequest错误发生了什么。 –