photo-sphere-viewer 圖片跨域問題 The panorama can't be loaded


photo-sphere-viewer 圖片跨域問題 The panorama can't be loaded

使用photo-sphere-viewer 展示不是當前域的圖片 會出現跨域問題。。。

this.viewer = new Viewer({
  container: document.querySelector('#viewer'),
  panorama: 'https://manual.pchi-china.com/img/bgReg.44a8bdab.png',
。。。。

百度了有一個哥們,通過改造源碼的方式解決 但是已經是2018年的事情了 我找到源碼后已經找不到他改的那些代碼了,所以這條路行不通。

解決方法一:

在看three.js的源碼的時候 發現使用base64圖片的時候是沒有跨域問題的

imgurl1:'data:image/jpeg;base64,/9j/4AAQSkZJ..'

使用base64的時候雖然沒有跨域問題,當圖片數量多了(就幾張沒事),base64太大 無論是前端轉換 還是后台轉換再傳輸過來都是非常耗時的。

解決方法二:

既然不能跨域加載圖片,那就通過nginx 反向代理一下也是可以解決的。

如果使用OSS雲存儲 雲存儲也可以配置跨域,具體這邊我沒有操作權限 就沒有嘗試。

解決方法三:

方案二如果圖片oss存儲地址 增加或修改都需要更改nginx配置,也是挺麻煩。

現在項目是一個前台vue 一個后台java項目 nginx把api請求反向代理到后台

那么我直接在后台提供一個 將遠程圖片地址轉換成圖片流返回,這樣的話都走一個請求, 就不會因為oss地址變化來修改nginx配置。

imgurl1:'http://localhost:8080/api/common/image?url=https://manual.pchi-china.com/img/bgReg.44a8bdab.png',


    @ApiOperation(value = "獲取圖片")
    @GetMapping("/image")
    public void image(HttpServletResponse response, String url) {
        OutputStream os = null;
        BufferedInputStream bis = null;
        HttpURLConnection httpUrl = null;
        URL urlObj;
        int BUFFER_SIZE = 1024;
        byte[] buf = new byte[BUFFER_SIZE];
        int size = 0;
        try {
            urlObj = new URL(url);
            httpUrl = (HttpURLConnection) urlObj.openConnection();
            httpUrl.connect();
            bis = new BufferedInputStream(httpUrl.getInputStream());
            os = response.getOutputStream();
            while ((size = bis.read(buf)) != -1) {
                os.write(buf, 0, size);
            }
            os.flush();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (os != null) {
                try {
                    os.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if (bis != null) {
                try {
                    bis.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            httpUrl.disconnect();
        }
    }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM