it-swarm.com.de

Wie verwende ich Access-Control-Allow-Origin? Geht es nur zwischen den HTML-Head-Tags?

Ich habe über Access-Control-Allow-Origin gelesen, da es sehr effektiv erscheint, domänenübergreifende Anforderungen zuzulassen, da ich Zugriff auf die externe Site habe. Meine Frage ist, wie ich Access-Control-Allow-Origin benutze, um domänenübergreifende Anfragen zuzulassen. Ich habe es versucht (nicht lachen) (übrigens will ich nur eine einzige Zahl, 1 oder 0, die zurückgegeben werden soll)

<html>
<head>
Access-Control-Allow-Origin: *
</head>
<body>
1
</body>
</html>

Bin ich nahe? Danke für Ihre Hilfe. Wenn es eine einfachere Möglichkeit gibt, eine einfache domänenübergreifende Anforderung auszuführen, lassen Sie es mich wissen.

21
davis

Das ist ein HTTP-Header. Sie konfigurieren Ihren Webserver oder Ihre Webapp so, dass dieser Header idealerweise gesendet wird. Vielleicht in htaccess oder PHP.

Alternativ können Sie möglicherweise verwenden

<head>...<meta http-equiv="Access-Control-Allow-Origin" content="*">...</head>

Ich weiß nicht, ob das funktionieren würde. Nicht alle HTTP-Header können direkt im HTML-Format konfiguriert werden. </ Strike>

Dies funktioniert als Alternative zu vielen HTTP-Headern, siehe jedoch den Kommentar von @EricLaw . Dieser bestimmte Header ist anders.

Vorbehalt

Bei dieser Antwort geht es ausschließlich um das Setzen von Kopfzeilen. Ich weiß nichts über das Zulassen von domänenübergreifenden Anforderungen.

Über HTTP-Header

Jede Anfrage und Antwort hat Kopfzeilen. Der Browser sendet dies an den Webserver

GET /index.htm HTTP/1.1

Dann die Überschriften

Host: www.example.com
User-Agent: (Browser/OS name and version information)
.. Additional headers indicating supported compression types and content types and other info

Dann sendet der Server eine Antwort

Content-type: text/html
Content-length: (number of bytes in file (optional))
Date: (server clock)
Server: (Webserver name and version information)

Zusätzliche Header können beispielsweise Cache-Control konfiguriert werden. Dies hängt von Ihrer Sprache (PHP, CGI, Java, htaccess) und dem Webserver (Apache usw.) ab.

10
George Bailey

Es gibt drei Möglichkeiten, domänenübergreifend Origin (außer jsonp) zuzulassen:

1) Setzen Sie die Kopfzeile in der Seite direkt mit einer Templatesprache wie PHP. Denken Sie daran, dass sich kein HTML-Code vor Ihrer Kopfzeile befinden kann, da sonst ein Fehler auftritt.

 <?php header("Access-Control-Allow-Origin: http://example.com"); ?>

2) Ändern Sie die Serverkonfigurationsdatei (Apache.conf) und fügen Sie diese Zeile hinzu. Beachten Sie, dass "*" alle zulässt. Einige Systeme benötigen möglicherweise auch die Berechtigungsnachweise. Lassen Sie generell zu, dass jeder Zugriff ein Sicherheitsrisiko darstellt, und sollte vermieden werden:

Header set Access-Control-Allow-Origin "*"
Header set Access-Control-Allow-Credentials true

3) Um mehrere Domänen auf Apache-Webservern zuzulassen, fügen Sie der Konfigurationsdatei Folgendes hinzu

<IfModule mod_headers.c>
    SetEnvIf Origin "http(s)?://(www\.)?(example.org|example.com)$" AccessControlAllowOrigin=$0$1
    Header add Access-Control-Allow-Origin %{AccessControlAllowOrigin}e env=AccessControlAllowOrigin
    Header set Access-Control-Allow-Credentials true
</IfModule>

4) Für Entwicklungszwecke hacken Sie nur Ihren Browser und erlauben Sie unbegrenztes CORS mit der Chrome Allow-Control-Allow-Origin-Erweiterung

16
mbokil
<?php header("Access-Control-Allow-Origin: http://example.com"); ?>

Dieser Befehl deaktiviert nur die Warnungsinformationen der ersten Konsole

Konsole

Ergebnis: Konsolenergebnis

0
Jakub Ujvvary

Wenn Sie Java und Spring MVC verwenden, müssen Sie nur die folgende Anmerkung zu Ihrer Methode hinzufügen, die Ihre Seite zurückgibt:

@CrossOrigin(origins = "*")

"*" dient dazu, dass Ihre Seite von überall aus erreichbar ist . Siehe https://developer.mozilla.org/fr/docs/Web/HTTP/Headers/Access-Control-Allow-Origin mehr dazu.

0
Laurent