Physical Address

304 North Cardinal St.
Dorchester Center, MA 02124

[OmkeaS]關於資源取用的XMLHttpRequest問題

內容目錄

關於資源取用的XMLHttpRequest問題

終於將機器從VM搬到Proxmox上了,也移植到docker中,然後就發現到一個問題,條目的圖片居然無法從Viewer中讀取出來。怎麼會這樣勒,從console中會看到有個錯誤,寫著This request has been blocked; the content must be served over HTTPS會發現到有個關鍵字XMLHttpRequest,看來是出現了Https取用Http的的混用問題。
但說來慚愧,現在才注意到這個問題也是因為原本網站還沒有使用Https,所以一直沒發現到OmekaS存在這個狀況。

OmekaS的資源取用問題

我們會發生這個問題要先提到Universal viewer這個模組,經過檢查發現Universal viewer會呼叫配置檔以及IIIF的API,然後都是走Http,而這個取用路徑似乎包在Universal viewer的JS中,很難直接修改。

解決作法

遇到XMLHttpRequest問題其實滿好處理的,從Stockflow上可以找到好幾種建議,大致上會分三種:

  1. As Chrome suggests, change your API calls to use HTTPs (recommended):將取用資源也改為Https
  2. Use HTTP instead of HTTPs:網站改為Http
  3. Add the following meta tag to your element in your HTML:在head加入以下宣告
<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">

第二種很明顯在這個年代來說不適合,而第一種因為很難改動Universal viewer的呼叫方式變得很困難執行,雖然是最佳解。於是剩下第三種,直接允許瀏覽器接受混用狀態。

實作方式有兩種:

  1. 在theme的view>layout.phtml中加入標頭
  2. 在theme中的view>universal viewer>play.phtml中加入標頭

就看專案中怎麼取用Universal viewer工具囉。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *