CORS Problem beim Herunterladen von Image

9

Ich habe eine API, die Base64-String in Bild konvertiert und das Bild in Tomcat Server schreibt. Das Bild schreibt erfolgreich nach dem Aufrufen der API, gibt aber den Fehler beim Abrufen des gleichen Bildes folgt:

  

"Kein 'Access-Control-Allow-Origin'-Header ist auf dem angeforderten Header vorhanden   Ressource. Herkunft ist daher nicht erlaubt. XMLHttpRequest   kann Ссылка nicht laden. Nein   Der 'Access-Control-Allow-Origin'-Header ist auf dem angeforderten Header vorhanden   Ressource.

Mein Code ist wie folgt:

%Vor%

Und web.xml ist:

%Vor%

Und meine tokenFilter-Klasse ist:

%Vor%     
Tanvi Garg 21.03.2017, 10:45
quelle

6 Antworten

1

Sie müssen den Filter in web.xml in CATALINA_HOME/conf mit dem richtigen Pfadnamen oder nur /* hinzufügen. Fügen Sie einen Filter wie folgt hinzu

%Vor%

Weitere Informationen finden Sie in diesem offiziellen Dokument

    
Shettyh 13.10.2017 09:18
quelle
0

Sie müssen sich Ihre Front-End-Seite (XMLHttpRequest) ansehen, um das Problem zu beheben, anstatt auf der Tomcat-Seite.

Dieser Artikel über die Verwendung von CORS wird Ihnen viel Aufschluss geben, um die Ursache herauszufinden.

    
Ruwan Abeykoon 06.10.2017 15:41
quelle
0

Es gibt einige Regeln, die zu beachten sind:

  1. Wenn Sie XMLHttpRequest in einer anderen Domäne anfordern, tritt dieses Problem auf.
  2. Browser erlaubt immer denselben Ursprung, andere nicht für Sicherheitsrichtlinien. Wenn der Browser eine Anfrage an einen anderen Benutzer findet, wird er Sie blockieren.

Diese Frage [Wie benutzt man einen CORS-Proxy, um "Keine Access-Control-Allow-Origin-Header" -Probleme zu umgehen] wird hier beantwortet: Ссылка

  

CORS-Sicherheit - Universal Erlauben

     
  1. Einstellung der 'Access-Control-Allow-Origin'-Kopfzeile auf *
  2.   
  3. Macht den Inhalt effektiv zu einer öffentlichen Ressource, die Zugriff von jeder Domäne ermöglicht.
  4.   

Szenarien:

     
  1. Ein Angreifer kann Daten von einer Intranetsite stehlen, die diesen Header auf * gesetzt hat, indem er einen Benutzer dazu verleitet, eine von einem Angreifer kontrollierte Site aufzusuchen   das Internet.
  2.   
  3. Ein Angreifer kann über den Browser eines Opfers Angriffe auf andere Remote-Apps durchführen, wenn das Opfer zu einer von einem Angreifer kontrollierten Website navigiert.
  4.   

Ich habe hier eine Antwort gegeben: Ist dieser CORS-Handler sicher? Sie können schau hier über CORS nach. Es wird dir mehr klären.

Ressourcenverknüpfung:

  1. Cross-Origin XMLHttpRequest
  2. Warum erhält mein JavaScript einen "No 'Access-Control-Allow-Origin" Header ist auf der angeforderten Ressource "Fehler, wenn Postman nicht?
SkyWalker 11.10.2017 16:42
quelle
0

Wenn Sie Zugriff auf die Pipelines in tomcat server haben, können Sie versuchen, die API in HTTPS bereitzustellen, dann würde das CORS nicht passieren.

ODER

Sie können Cors in Tomcat Server deaktivieren, die ich nicht empfehlen

    
Evinn 12.10.2017 19:05
quelle
0

CORS Probleme? Verwenden Sie einen Proxy und folgen Sie den Regeln. Indem Sie Ihre Kopfzeile ändern, entfernen Sie die Sicherheit, die eingerichtet wurde, um eine bestimmte Art von Angriff zu vermeiden. Das ist eine schlechte Idee, wenn Sie etwas tun, das sicher sein muss.

Bei einem Proxy können Sie die Anfrage abfangen und alles in der Kopfzeile ändern, die Sie benötigen, und den Antwort-Header bei Bedarf neu schreiben, ohne dass ein Risiko entsteht.

Von Ihrer Fehlermeldung " Ссылка " ist offensichtlich etwas mit der URL nicht in Ordnung. Bitte senden Sie den Code für die Anfrage.

@SkyWalker stimmt mit seiner Antwort. Ich vermute, sobald Sie uns den Rest des Codes liefern, wird es offensichtlich, dass sich die Domäne oder das Protokoll und die Domäne ändern. Wenn dies der Fall ist und Sie sich nicht verwundbar machen wollen, führen Sie einfach einen Proxy durch, der das gültige SSL-Zertifikat am Proxy beendet. (nicht implizieren, dass Sie den Verkehr zu den Upstream nicht sichern sollten)

Nginx funktioniert gut für diese Art von Aufgabe. Aber wählen Sie Ihren Proxy .. Es gibt eine Menge von ihnen da draußen.

    
natedennis 12.10.2017 20:27
quelle
0

Wenn ein XMLHttpRequest Probleme verursacht, dann benutze es nicht, sondern denke nur daran, die Daten (mit HttpURLConnection ) in ein lokales Bytearray zu laden. Dekodiere (zeige) nun das Bild, wie es von einer lokalen Variablen geladen wurde (zB: ein Byte-Array), um CORS zu vermeiden.

Ich bin auch an eine URL wie http://host:port/address/ gewöhnt, aber Ihre ist witten als http://:port// , so verstehe ich nicht, wie Sie auf einen Web (http) Server zugreifen können, indem Sie nur einen Port und ohne Server verwenden Adresse. Das sollte einen URL-Fehler verursachen, aber Sie müssen das Ziel der Datei irgendwie erreichen, da CORS zufällig die Medien schützt ...

Der folgende Code könnte es wert sein, in einem leeren / neuen Testprojekt zu versuchen:

(PS: Kein testbarer Link wie http://server:port/tmpFiles/image.jpg , also wie gezeigt)

%Vor%

Und die damit verbundenen Importe:

%Vor%     
VC.One 13.10.2017 17:00
quelle

Tags und Links