Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
在解決問題之道上不斷前行
終於將機器從VM搬到Proxmox上了,也移植到docker中,然後就發現到一個問題,條目的圖片居然無法從Viewer中讀取出來。怎麼會這樣勒,從console中會看到有個錯誤,寫著This request has been blocked; the content must be served over HTTPS,會發現到有個關鍵字XMLHttpRequest,看來是出現了Https取用Http的的混用問題。
但說來慚愧,現在才注意到這個問題也是因為原本網站還沒有使用Https,所以一直沒發現到OmekaS存在這個狀況。
我們會發生這個問題要先提到Universal viewer這個模組,經過檢查發現Universal viewer會呼叫配置檔以及IIIF的API,然後都是走Http,而這個取用路徑似乎包在Universal viewer的JS中,很難直接修改。
遇到XMLHttpRequest問題其實滿好處理的,從Stockflow上可以找到好幾種建議,大致上會分三種:
- As Chrome suggests, change your API calls to use HTTPs (recommended):將取用資源也改為Https
- Use HTTP instead of HTTPs:網站改為Http
- Add the following meta tag to your element in your HTML:在head加入以下宣告
<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">
第二種很明顯在這個年代來說不適合,而第一種因為很難改動Universal viewer的呼叫方式變得很困難執行,雖然是最佳解。於是剩下第三種,直接允許瀏覽器接受混用狀態。
實作方式有兩種:
就看專案中怎麼取用Universal viewer工具囉。