Pdf.js: Fehler beim Laden von PDF auf einer fremden URL mit pdf.js

Erstellt am 5. Apr. 2016  ·  22Kommentare  ·  Quelle: mozilla/pdf.js

Hallo,
Ich habe diesen Fehler, wenn ich ein PDF von einer fremden URL laden möchte

Fehler: Dateiursprung stimmt nicht mit dem des Betrachters überein
throw new Error('Dateiursprung stimmt nicht mit dem des Betrachters überein');

bitte helft!

Hilfreichster Kommentar

Ich beschließe, diese Zeilen in viewer.js zu kommentieren

if (fileOrigin !== viewerOrigin) {
throw new Error('Dateiursprung stimmt nicht mit dem des Betrachters überein');
}

Alle 22 Kommentare

Es ist absichtlich gemacht, siehe #6916. Ändern Sie viewer.js, um die Herkunft Ihres Hosts in die Liste HOSTED_VIEWER_ORIGINS aufzunehmen. Schließen wie beantwortet.

Danke @yurydelendik
Aber ich weiß nicht, wie mir diese Antwort hilft

Aber ich weiß nicht, wie mir diese Antwort hilft

Ändern Sie viewer.js, um die Herkunft Ihres Hosts in die Liste HOSTED_VIEWER_ORIGINS aufzunehmen.

Ich habe es getan, aber ich weiß nicht, wie ich meine Remote-PDF-Datei aufrufen soll

Ich habe es getan, aber ich weiß nicht, wie ich meine Remote-PDF-Datei aufrufen soll

Bitte erkläre. Können Sie auch folgende Angaben machen:

  • Was ist die URL für den Viewer einschließlich des Dateiparameters?
  • Was wurde im viewer.js-Code geändert?
  • Wie wurden CORS-Header auf dem Server konfiguriert, der PDF hostet?

Meine PDF-Datei ist auf Cloudinary.
Und wenn ich den Zugriff in die Variable DEFAULT_URL eintrage, bekomme ich einen Fehler
Fehler: Ursprung des Dateibetrachters stimmt nicht überein
throw new Error ( 'Datei-Viewer-Ursprung stimmt nicht mit \'s überein');

Ich beschließe, diese Zeilen in viewer.js zu kommentieren

if (fileOrigin !== viewerOrigin) {
throw new Error('Dateiursprung stimmt nicht mit dem des Betrachters überein');
}

Kommentieren Sie die Logik nicht aus. Verwenden Sie console.log(), um zu sehen, ob Ihr fileOrigin und viewerOrigin übereinstimmen. Stellen Sie sicher, dass mindestens ein Eintrag in Ihrem HOSTED_VIEWER_ORIGINS-Objekt mit dem viewerOrigin übereinstimmt und der Fehler "_Dateiursprung entspricht nicht viewer_" verschwindet.

Füge das hinzu:

console.log('fileOrigin', fileOrigin);
console.log('viewerOrigin', viewerOrigin);

... direkt darüber:

if (fileOrigin !== viewerOrigin) {
throw new Error('file origin does not match viewer\'s');
}

Ich würde wetten, dass Sie einen zusätzlichen Schrägstrich am Ende Ihrer URL vermissen (oder haben), wie ich es getan habe (entdeckt, als diese beiden Variablen in der Konsole protokolliert wurden).

Hoffe das hilft jemandem.

Es wäre schön, das Array HOSTED_VIEWER_ORIGINS mit Regex/Wildchars konfigurieren zu können.

Um nicht hartcodierte Mozilla-Domains zuzulassen, muss ich den Quellcode einer 10k-Zeilen-Build-Datei namens viewer.js ändern?

@gildassamuel du

Die richtige Lösung ist "viewer.js" öffnen und den Host Ihrer Datei an HOSTED_VIEWER_ORIGINS anhängen
var HOSTED_VIEWER_ORIGINS = ['null', '.....'];

Prüfcode nicht entfernen :|

Ich habe das gleiche Problem (der Dateiursprung stimmt nicht mit dem des Betrachters überein) auf UWP mit einer lokalen PDF-Datei. Welcher Eintrag muss HOSTED_VIEWER_ORIGINS für einen lokalen Pfad genau hinzugefügt werden?

Für alle anderen, die dies in einer App verwenden, musste ich 'file://' hinzufügen, damit lokale Pfade funktionieren.

var HOSTED_VIEWER_ORIGINS = [
'Null',
' http://mozilla.github.io ',
' https://mozilla.github.io ',
'file://' //lokaler Viewer in der App
];

In meinem Fall habe ich lokal codiert und ich hatte das gleiche Problem und habe es gelöst, indem ich meine lokale Adresse hinzugefügt

var HOSTED_VIEWER_ORIGINS = [
       'null',
       'http://mozilla.github.io',
       'https://mozilla.github.io',
       'http://localhost:5000'
];

Aber entfernen Sie nicht den Prüfcode :

if (fileOrigin !== viewerOrigin) {
       throw new Error('file origin does not match viewer\'s');
}

Ich denke, das Hinzufügen dieser 2 Zeilen wird eine gute Lösung sein. Ihre lokale IP wird automatisch erkannt (wo immer Sie Ihre Anwendung starten)

  var LOCAL_AUTO_DETECT_ORIGIN = window.location.origin;

  var HOSTED_VIEWER_ORIGINS = ['null', 'http://mozilla.github.io', 'https://mozilla.github.io'];

  HOSTED_VIEWER_ORIGINS.push(LOCAL_AUTO_DETECT_ORIGIN);

Es ist absichtlich gemacht, siehe #6916. Ändern Sie viewer.js, um die Herkunft Ihres Hosts in die Liste HOSTED_VIEWER_ORIGINS aufzunehmen. Schließen wie beantwortet.

half mir

Es ist ein sehr schlimmes Problem, wie auch immer noch gelöst.

Der Zugriff zum Abrufen unter ' https://dmain/file.pdf ' vom Ursprung ' http://localhost ' wurde durch die CORS-Richtlinie blockiert: Auf der angeforderten Ressource ist kein 'Access-Control-Allow-Origin'-Header vorhanden. Wenn eine undurchsichtige Antwort Ihren Anforderungen entspricht, setzen Sie den Modus der Anfrage auf "no-cors", um die Ressource mit deaktiviertem CORS abzurufen.

Hallo,

gibt es dafür einen grund?

Es liegt in der Verantwortung des Browsers, sich um die Cors-Richtlinien zu kümmern, nicht pdfjs
Ich denke, dieser Haken sollte entfernt werden.

Ich habe return; oben in der Funktion "valideFileURL" hinzugefügt und es funktioniert jetzt einwandfrei. Ich kann PDFs von Amazon s3 laden.

Wie @ IK77 erwähnt, können Sie dies bitte begründen?

Nun, ich habe das gefunden: https://github.com/mozilla/pdf.js/pull/6916
@IK77

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

timvandermeij picture timvandermeij  ·  4Kommentare

azetutu picture azetutu  ·  4Kommentare

THausherr picture THausherr  ·  3Kommentare

anggikolo11 picture anggikolo11  ·  3Kommentare

PeterNerlich picture PeterNerlich  ·  3Kommentare