Closed jkothe closed 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
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.
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]
$ 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
$ 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
$ 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
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.
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