Ich kann nicht herausfinden, warum meine .htaccess
- Kopfzeileneinstellungen nicht funktionieren.
Mein .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 Header
entferne und sie in index.php
Hinzufüge, funktioniert alles einwandfrei.
header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Methods: PUT, GET, POST, DELETE, OPTIONS");
header("Access-Control-Allow-Headers: *");
Was vermisse ich?
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"
Nur zur Veranschaulichung, ich hatte genau dasselbe 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ückkam 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 ist eine Umleitung aufgetreten und die AJAX Anfrage berücksichtigt/folgt keine Umleitungen.
Es stellte sich heraus, dass der Schrägstrich am Ende der Domain fehlt ( http://192.0.2.1/upload/)
Ich habe es am Ende noch einmal mit einem Schrägstrich getestet. Fügte auch einen Schrägstrich im Skript hinzu 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 Header fehlerfrei sind, und um Fehler zu beheben, die auftreten.
Ich habe ein Shared Hosting auf GoDaddy. Ich brauchte auch eine Antwort auf diese Frage, und nachdem ich mich umgesehen hatte, stellte ich fest, dass es möglich ist.
Ich habe eine .htaccess-Datei geschrieben und sie im selben Ordner wie meine Aktionsseite abgelegt. Hier ist der Inhalt 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-Anruf:
$.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:
Header-Set Access-Control-Allow-Origin in .htaccess funktioniert nicht
Seien Sie vorsichtig bei:
Header add Access-Control-Allow-Origin "*"
Dies ist überhaupt nicht vernünftig, um jedermann Zugang zu gewähren. Es ist vorzuziehen, nur eine Liste bekannter vertrauenswürdiger 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,
Ich habe die Header des Apache-Moduls a2enmod aktiviert und das Problem wurde behoben.
Versuchen Sie dies im .htaccess des externen Stammordners
<IfModule mod_headers.c>
Header set Access-Control-Allow-Origin "*"
</IfModule>
Seien Sie vorsichtig bei: Header hinzufügen Access-Control-Allow-Origin "*" Dies ist überhaupt 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>
Ich würde Miros Antwort für den Link zur Header-Checker-Site geben http://www.webconfs.com/http-header-check.php . Es wird jedes Mal eine unangenehme Anzeige eingeblendet, wenn Sie es verwenden. Es ist jedoch 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>
Folgendes habe ich auch zu /etc/httpd.conf (Apaches Konfigurationsdatei) hinzugefügt:
AllowOverride All
Die Header-Checker-Site hat überprüft, ob der Header Access-Control-Allow-Origin jetzt gesendet wird (danke, Miro!).
Firefox 50.0.2, Opera 41.0.2353.69 und Edge 38.14393.0.0) rufen die Datei jedoch trotzdem ab, auch wenn ohne den Access-Control-Allow-Origin-Header (Hinweis: Möglicherweise überprüfen sie IP-Adressen, da die beiden von mir verwendeten Domänen auf demselben Server unter derselben IPv4-Adresse gehostet werden.)
Allerdings ignoriert Chrome 54.0.2840.99 m (64-Bit) den Access-Control-Allow-Origin-Header und schlägt dennoch fehl und meldet fälschlicherweise:
In der angeforderten Ressource ist kein 'Access-Control-Allow-Origin'-Header vorhanden. Origin ' {mydomain}' ist daher kein Zugriff gestattet.
Ich denke, das muss eine Art "erstes" sein. IE funktioniert ordnungsgemäß; Chrome, Firefox, Opera und Edge sind alle fehlerhaft; und Chrome ist die schlimmste Ist das nicht das genaue Gegenteil des üblichen Falls?
Nach einem halben Tag ohne Arbeit. Verwenden eines Header-Check-Service, obwohl alles funktioniert hat. Die Firewall bei der Arbeit entfernte sie
versuche dies:
<IfModule mod_headers.c>
Header set Access-Control-Allow-Credentials true
Header set Access-Control-Allow-Origin "your domain"
Header set Access-Control-Allow-Headers "X-Requested-With"
</IfModule>
Es ist vorzuziehen, eine Liste bekannter vertrauenswürdiger Hosts zuzulassen.