slub / dfg-viewer

The DFG Viewer is a free web service for browsing digitized books from remote library repositories in a rich and dynamic environment.
https://dfg-viewer.de
GNU General Public License v3.0
29 stars 25 forks source link

Digitalisate (Images) werden nicht angezeigt #146

Closed jkothe closed 4 years ago

jkothe commented 4 years ago

Images die über ein oder mehrere Redirects ausgeliefert werden, werden im Viewer nicht angezeigt. Vermutlich wird den Redirects nicht gefolgt ( z.B. --location oder -L in curl). Beim GDZ sind das in der Regel 2 Redirects: 1. http -> https, 2. Resolving URL-Path zu File-Path und Auslieferung.

Beispiel: DFG-Viewer ohne Images: https://dfg-viewer.de/show/?set[mets]=https://gdz.sub.uni-goettingen.de/mets/PPN595246613.mets.xml Image: http://gdz-srv1.sub.uni-goettingen.de/content/PPN595246613/1000/0/00000001.jpg

CURL ohne "Follow redirects": $ curl -v --output 0000001.jpg http://gdz.sub.uni-goettingen.de/content/PPN595246613/1000/0/00000001.jpg

CURLmit "Follow redirects": $ curl -v -L --output 0000001.jpg http://gdz.sub.uni-goettingen.de/content/PPN595246613/1000/0/00000001.jpg

albig commented 4 years ago

Redirects werden gefolgt. Das wird sehr häufig genutzt.

Das o.g. Beispiel scheitert an den fehlenden CORS-Headern der ersten Adresse. Damit ist die Geschichte für den Browser gelaufen und der Abruf wird abgebrochen.

Die Browser-Console liefert dazu

Chrome

Access to image at 'http://gdz-srv1.sub.uni-goettingen.de/content/PPN595246613/1000/0/00000001.jpg' from origin 'https://dfg-viewer.de' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

Firefox

ist noch strikter. Hier ist das Laden des Images über HTTP ohnehin nicht erlaubt, wenn der DFG-Viewer per HTTPS aufgerufen wird. Das wird in Zukunft auch im Chrome das Verhalten sein. Laden von gemischten Ansichtsinhalten "http://gdz-srv1.sub.uni-goettingen.de/content/PPN595246613/1000/0/00000001.jpg" wurde blockiert.[Weitere Informationen]

Richtig müsste der Aufruf des DFG-Viewers hier per HTTP erfolgen: http://dfg-viewer.de/show/?set[mets]=https://gdz.sub.uni-goettingen.de/mets/PPN595246613.mets.xml

Das Laden der Bilder scheitert trotzdem mit der vom Chrome bekannten Begründung: Quellübergreifende (Cross-Origin) Anfrage blockiert: Die Gleiche-Quelle-Regel verbietet das Lesen der externen Ressource auf http://gdz-srv1.sub.uni-goettingen.de/content/PPN595246613/1000/0/00000001.jpg. (Grund: CORS-Kopfzeile 'Access-Control-Allow-Origin' fehlt). [Weitere Informationen]

Antwort-Header

1. Location (CORS fehlt --> Ende)

$ curl -I http://gdz.sub.uni-goettingen.de/content/PPN595246613/1000/0/00000001.jpg
HTTP/1.1 301 Moved Permanently
Content-length: 0
Location: https://gdz.sub.uni-goettingen.de/content/PPN595246613/1000/0/00000001.jpg
Connection: close

2. Location (CORS ok)

$ curl -I https://gdz.sub.uni-goettingen.de/content/PPN595246613/1000/0/00000001.jpg
HTTP/1.1 301 Moved Permanently
Server: nginx
Content-Type: text/html; charset=UTF-8
X-Powered-By: PHP/7.3.11
Date: Fri, 03 Jan 2020 08:35:04 GMT
Location: /iiif/image/gdz:PPN595246613:00000001/full/1000,/0/default.jpg
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, HEAD, OPTIONS
Access-Control-Allow-Credentials: true

3. Location (CORS ok)

$ curl -I https://gdz.sub.uni-goettingen.de/iiif/image/gdz:PPN595246613:00000001/full/1000,/0/default.jpg
HTTP/1.1 200 OK
Server: nginx
Content-Type: image/jpeg
X-Powered-By: PHP/7.3.11
Cache-Control: public, s-maxage=86400
Date: Fri, 03 Jan 2020 08:35:40 GMT
ETag: "bf228f3666bea89cce82c133131b3b60"
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, HEAD, OPTIONS
Access-Control-Allow-Credentials: true
stweil commented 2 years ago

Leider scheint das auch zwei Jahre später noch ein ungelöstes Thema für einige Datenanbieter zu sein, das nicht nur die Bilder, sondern auch die Volltexte betreffen kann. Für dieses Beispiel werden die Volltexte im DFG-Viewer nicht angezeigt: https://digital.lb-oldenburg.de/lbolrz/oai/?verb=GetRecord&metadataPrefix=mets&identifier=oai:digital.lb-oldenburg.de/lbolrz:1333368.

Als Entwickler sieht man die Fehlermeldung in den Werkzeugen für Web-Entwickler im Browser der Wahl. "Normale" Anwender sind aber vermutlich erst einmal hilflos.

Wäre es möglich, ersatzweise statt des nicht abrufbaren Volltextes eine geeignete Fehlermeldung anzuzeigen, beispielsweise Volltext beim Anbieter nicht zugänglich. Mögliche Ursachen: quellübergreifende Anfragen werden blockiert / fehlende Leseberechtigung für Datei mit Volltext / fehlende Datei mit Volltext. Fehler bitte beim Anbieter melden.?

Analog könnte man bei nicht abrufbaren Bildern den gleichen Text als Bild zeigen.