2017-03-06 41 views
1

我正在使用WebViewer 2.2.2並嘗試在ASP.NET MVC 5視圖中顯示存儲在Azure Blob存儲中的XOD文件,網址爲: https://somename.blob.core.windows.net/containername/GettingsStarted.xodPDFTron WebViewer - 嘗試顯示存儲在Azure BLOB存儲中的XOD文件時出現CORS錯誤

我得到了瀏覽器控制檯CORS錯誤爲「CORS未啓用,或者發現這一要求的任何匹配規則。

我發現URL https://www.pdftron.com/webviewer/demo/tutorials/xdomain.html啓用CORS。我應該在proxy.html文件中提供哪個URL,因爲存儲在Azure BLOB存儲中的每個XOD blob都會有一個不同的URL。

部分https://somename.blob.core.windows.net/containername/會相同,但是對於不同的XOD,文件名會有所不同。那麼,我如何在proxy.html文件中傳遞XOD文件名?

這是處理CORS問題的正確方法https://www.pdftron.com/webviewer/demo/tutorials/xdomain.html還是有另一種更簡單的方法?

@model XODViewer.DataModel.Document 

    @{ 
     ViewBag.Title = "Document"; 
    } 

    @Scripts.Render("~/bundles/jquery") 
    <script src="~/lib/WebViewer.min.js"></script> 

    <style> 
     #viewer { 
      width: 1024px; 
      height: 600px; 
     } 
    </style> 

    <script> 
     $(function() { 
       var viewerElement = document.getElementById('viewer'); 
       var myWebViewer = new PDFTron.WebViewer({ 
        path: 'lib', 
        type: 'html5', 
        documentType: "xod", 
initialDoc:"https://somename.blob.core.windows.net/containername/GettingsStarted.xod", 
        config: '../../lib/WebViewerConfig.js', 
        streaming: true, 
        enableAnnotations: false, 
        enableOfflineMode: false, 
        enableReadOnlyMode: true, 
        azureWorkaround: true 
       }, viewerElement); 
      }); 
    </script> 

    <div id="viewer"class="xod-viewer-div"> 
    </div> 

回答

1

根據你的描述,我跟着這個tutorial開始使用WebViewer。我可能會遇到同樣的錯誤,正如你所說如下:

<script> 
    $(function() { 
     var viewerElement = document.getElementById("viewer"); 
     var myWebViewer = new PDFTron.WebViewer({ 
      path: "/libs", 
      type: "html5", 
      documentType:'xod', 
      initialDoc:"https://brucechen.blob.core.windows.net/docs/GettingStarted.xod" 
     }, viewerElement); 
    }); 
</script> 

enter image description here

對於跨域訪問,你可以利用Microsoft Azure Storage Explorer配置CORS設置如下:

結果

enter image description here

+0

MaxAgeInSeconds定義中指出「這定義秒瀏覽器的最大數目將緩存飛行前請求。由於這些「預先飛行」請求是可計費的,因此通常建議您將此值設置爲較高的數值,以便瀏覽器不會頻繁發出此「預先飛行」請求。(1)可以將其留給值爲100甚至可能更改爲50,因爲我相信一旦在WebViewer中下載了XOD,就不會再有瀏覽器發出請求(2)在PROD Azure實例中設置相同設置是否安全(3)任何PowerShell cmdlet例子 –

+1

(1)對於MaxAgeInSeconds,您可以按照您的預期更改爲50(2)容器訪問級別是隻讀的,爲了更安全的方式,您可以爲特定原點添加CORS規則(3)您可以參考到這個[示例](https://gist.github.com/irwinwilliams/4cf93b6e2461c753ff125590650186ae)。 –