Frage Headersatz Access-Control-Allow-Origin in .htaccess funktioniert nicht


Ich kann nicht herausfinden, warum meine .htaccess Header-Einstellungen funktionieren nicht.

Meine .htaccess Dateiinhalt:

Header set Access-Control-Allow-Origin *
Header always set Access-Control-Allow-Methods "POST, GET, OPTIONS, DELETE, PUT"
Header always set Access-Control-Allow-Headers "*"
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [QSA,L]

Aber wenn ich es entferne Header's und füge sie hinzu index.php dann funktioniert alles gut.

header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Methods: PUT, GET, POST, DELETE, OPTIONS");
header("Access-Control-Allow-Headers: *");

Was vermisse ich?


76
2018-05-17 17:33


Ursprung


Antworten:


Das sollte funktionieren:

Header add Access-Control-Allow-Origin "*"
Header add Access-Control-Allow-Headers "origin, x-requested-with, content-type"
Header add Access-Control-Allow-Methods "PUT, GET, POST, DELETE, OPTIONS"

121
2017-07-27 16:19



Nur für das Protokoll, lief ich auf genau das gleiche Problem und keine der Antworten funktionierte.

Ich habe ein Header-Checker-Tool verwendet: http://www.webconfs.com/http-header-check.php

Ich habe mit meiner IP getestet (http://192.0.2.1/upload) und was zurück kam, war folgendes:

HTTP/1.1 301 Moved Permanently => 
Date => Sat, 10 Jan 2015 04:03:35 GMT
Server => Apache/2.2.21 (Win32) mod_ssl/2.2.21 OpenSSL/1.0.0e PHP/5.3.8 mod_perl/2.0.4 Perl/v5.10.1
Location => http://192.0.2.1/upload/
Content-Length => 380
Connection => close
Content-Type => text/html; charset=iso-8859-1

Es gab eine Umleitung und die AJAX-Anfrage berücksichtigt keine Weiterleitungen.

Es stellte sich heraus, dass es sich um den fehlenden Schrägstrich am Ende der Domain handelte (http://192.0.2.1/upload/)

Ich habe es am Ende noch einmal mit einem Schrägstrich getestet und das habe ich unten verstanden. Im Skript wurde auch ein Schrägstrich hinzugefügt, und es funktionierte jetzt.

HTTP/1.1 200 OK => 
Date => Sat, 10 Jan 2015 04:03:53 GMT
Server => Apache/2.2.21 (Win32) mod_ssl/2.2.21 OpenSSL/1.0.0e PHP/5.3.8 mod_perl/2.0.4 Perl/v5.10.1
X-Powered-By => PHP/5.3.8
Access-Control-Allow-Origin => *
Access-Control-Allow-Methods => PUT, GET, POST, DELETE, OPTIONS
Access-Control-Allow-Headers => *
Content-Length => 1435
Connection => close
Content-Type => text/html

Verwenden Sie dieses Tool, um zu testen, ob Ihre Kopfzeilen gut sind und um Fehler zu beheben.


13
2018-01-10 04:36



Ich habe ein gemeinsames Hosting auf GoDaddy. Ich brauchte auch eine Antwort auf diese Frage, und nachdem ich mich umgesehen habe, habe ich festgestellt, dass es möglich ist.

Ich habe eine .htaccess-Datei geschrieben und sie in den gleichen Ordner wie meine Aktionsseite gestellt. Hier sind die Inhalte der .htaccess-Datei:

Header add Access-Control-Allow-Origin "*"
Header add Access-Control-Allow-Headers "origin, x-requested-with, content-type"
Header add Access-Control-Allow-Methods "PUT, GET, POST, DELETE, OPTIONS"

Hier ist mein Ajax-Aufruf:

    $.ajax({
        url: 'http://www.mydomain.com/myactionpagefolder/gbactionpage.php',  //server script to process data
        type: 'POST',
        xhr: function() {  // custom xhr
            myXhr = $.ajaxSettings.xhr();
            if(myXhr.upload){ // check if upload property exists
                myXhr.upload.addEventListener('progress',progressHandlingFunction, false); // for handling the progress of the upload
            }
            return myXhr;
        },
        //Ajax events
        beforeSend: beforeSendHandler,
        success: completeHandler,
        error: errorHandler,
        // Form data
        data: formData,
        //Options to tell JQuery not to process data or worry about content-type
        cache: false,
        contentType: false,
        processData: false
    });

Siehe diesen Artikel als Referenz:

Headersatz Access-Control-Allow-Origin in .htaccess funktioniert nicht


7
2018-05-02 15:54



Ich habe die Apache-Modul-Header a2enmod-Header aktiviert, und das Problem wurde behoben.


6
2017-12-10 04:32



Sei vorsichtig bei:

 Header add Access-Control-Allow-Origin "*"

Dies ist überhaupt nicht sinnvoll, um jedermann Zugang zu gewähren. Es wird empfohlen, nur eine Liste mit vertrauenswürdigen Hosts zuzulassen.

Header add Access-Control-Allow-Origin "http://aaa.example"
Header add Access-Control-Allow-Origin "http://bbb.example"
Header add Access-Control-Allow-Origin "http://ccc.example"

Grüße,


5
2017-10-07 08:55



Versuchen Sie dies in dem .htaccess des externen Stammordners

<IfModule mod_headers.c>
    Header set Access-Control-Allow-Origin "*"
</IfModule>

Seien Sie vorsichtig bei: Header add Access-Control-Allow-Origin "*" Dies ist nicht sinnvoll, um allen Zugriff zu gewähren. Ich denke du solltest Benutzer:

<IfModule mod_headers.c>
    Header set Access-Control-Allow-Origin "http://example.com"
</IfModule>

3
2017-11-03 08:18



Ich habe mir Miros Antwort für den Link zur Header-Checker-Seite gegeben http://www.webconfs.com/http-header-check.php. Es erscheint jedes Mal, wenn Sie es verwenden, eine anstößige Anzeige, aber es ist dennoch sehr nützlich, um das Vorhandensein des Headers Access-Control-Allow-Origin zu überprüfen.

Ich lese eine .json-Datei aus dem Javascript auf meiner Webseite. Ich habe festgestellt, dass das Hinzufügen des folgenden zu meiner .htaccess-Datei das Problem beim Anzeigen meiner Webseite in IE 11 (Version 11.447.14393.0) behoben hat:

<FilesMatch "\.(json)$">
  <IfModule mod_headers.c>
    Header set Access-Control-Allow-Origin "*"
  </IfModule>
</FilesMatch>

Ich habe auch Folgendes in /etc/httpd.conf (Apaches Konfigurationsdatei) hinzugefügt:

AllowOverride All

Die Header-Checker-Site hat überprüft, dass der Access-Control-Allow-Origin-Header jetzt gesendet wird (Danke, Miro!).

Firefox 50.0.2, Opera 41.0.2353.69 und Edge 38.14393.0.0 holen die Datei jedoch trotzdem ab ohne den Access-Control-Allow-Origin-Header. (Hinweis: Sie überprüfen möglicherweise IP-Adressen, da die beiden Domänen, die ich verwendet habe, beide auf demselben Server und unter derselben IPv4-Adresse gehostet werden.)

Chrome 54.0.2840.99 m (64-Bit) ignoriert jedoch den Header Access-Control-Allow-Origin und schlägt dennoch fehl und meldet fälschlicherweise:

Kein 'Access-Control-Allow-Origin'-Header ist auf dem angeforderten vorhanden   Ressource. Ursprung '{MeineDomäne}"ist daher nicht erlaubt.

Ich denke, das muss eine Art "erstes" sein. IE funktioniert korrekt; Chrome, Firefox, Opera und Edge sind alle fehlerhaft. und Chrome ist das am schlimmsten. Ist das nicht das genaue Gegenteil des üblichen Falles?


2
2017-12-14 00:32



Nach einem halben Tag mit nichts arbeiten. Mit einem Header-Check-Service, obwohl alles funktionierte. Die Firewall bei der Arbeit streifte sie ab


0
2018-04-06 17:56