Nie mogę zrozumieć, dlaczego moje .htaccess
ustawienia nagłówka nie działają.
.htaccess
Zawartość mojego pliku:
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]
Ale kiedy usuwam Header
i dodam je, index.php
wszystko działa dobrze.
header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Methods: PUT, GET, POST, DELETE, OPTIONS");
header("Access-Control-Allow-Headers: *");
Czego mi brakuje?
.htaccess
mod-rewrite
rewrite
cors
user1401592
źródło
źródło
a2enmod headers
Header set
tym przypadku najlepiej jest użyć . Jeśli kod zostanie zmieniony i ustawia nagłówek, to Apache wykona aheader add
wyśle podwójne ** nagłówki. Zepsuje to na przykład klientów, takich jak Restangular.Header add Access-Control-Allow-Credentials "true"
Tak dla porządku, napotkałem dokładnie ten sam problem i żadna z odpowiedzi nie zadziałała.
Użyłem narzędzia do sprawdzania nagłówków: http://www.webconfs.com/http-header-check.php
Testowałem z moim adresem IP (
http://192.0.2.1/upload
) i otrzymałem następujące informacje:Nastąpiło przekierowanie, a żądanie AJAX nie honoruje / śledzi przekierowań.
Okazało się, że to brakujący ukośnik na końcu domeny ( http://192.0.2.1/upload / )
Przetestowałem ponownie ze slashem na końcu i otrzymałem to poniżej. Dodano również ukośnik w skrypcie i teraz działa.
Użyj tego narzędzia, aby sprawdzić, czy nagłówki są dobre i rozwiązać problem.
źródło
Mam wspólny hosting w GoDaddy. Potrzebowałem odpowiedzi na to pytanie i po rozejrzeniu się stwierdziłem, że jest to możliwe.
Napisałem plik .htaccess, umieściłem go w tym samym folderze, co moja strona akcji. Oto zawartość pliku .htaccess:
Oto moje wywołanie Ajax:
Zobacz ten artykuł w celach informacyjnych:
Zestaw nagłówków Access-Control-Allow-Origin w .htaccess nie działa
źródło
Uważaj na:
Udzielanie dostępu każdemu nie jest wcale rozsądne. Lepiej jest zezwolić tylko na listę znanych zaufanych hostów ...
Pozdrowienia,
źródło
Aktywowałem nagłówki a2enmod nagłówków modułu Apache i problem został rozwiązany.
źródło
sudo a2enmod headers
i ponowne uruchomienie sprawiło, że działa!Spróbuj tego w .htaccess w zewnętrznym folderze głównym
Uważaj na: nagłówek dodaj Access-Control-Allow-Origin "*" To nie jest rozsądne, aby przyznawać dostęp wszystkim. Myślę, że powinieneś użyć:
źródło
Dałem +1 odpowiedzi Miro za łącze do strony sprawdzania nagłówków http://www.webconfs.com/http-header-check.php . Za każdym razem, gdy go używasz, wyświetla nieprzyjemną reklamę, ale mimo to jest bardzo przydatna do weryfikowania obecności nagłówka Access-Control-Allow-Origin.
Czytam plik .json z javascript na mojej stronie internetowej. Zauważyłem, że dodanie następującego pliku do mojego pliku .htaccess rozwiązało problem podczas przeglądania mojej strony internetowej w IE 11 (wersja 11.447.14393.0):
Dodałem również do /etc/httpd.conf (plik konfiguracyjny Apache):
Witryna sprawdzająca nagłówki potwierdziła, że nagłówek Access-Control-Allow-Origin jest teraz wysyłany (dzięki, Miro!).
Jednak Firefox 50.0.2, Opera 41.0.2353.69 i Edge 38.14393.0.0 i tak pobierają plik, nawet bez nagłówka Access-Control-Allow-Origin. (Uwaga: mogą sprawdzać adresy IP, ponieważ obie domeny, których używałem, są hostowane na tym samym serwerze, pod tym samym adresem IPv4).
Jednak przeglądarka Chrome 54.0.2840.99 m (64-bitowa) ignoruje nagłówek Access-Control-Allow-Origin i mimo wszystko kończy się niepowodzeniem, błędnie zgłaszając:
Myślę, że to musi być coś w rodzaju „pierwszego”. IE działa poprawnie; Chrome, Firefox, Opera i Edge są pełne błędów; a Chrome jest najgorszy . Czy to nie jest dokładne przeciwieństwo zwykłego przypadku?
źródło
Po spędzeniu pół dnia bez pracy. Korzystanie z usługi sprawdzania nagłówka, chociaż wszystko działało. Działająca zapora ogniowa je usuwała
źródło
Spróbuj tego:
Lepiej jest zezwolić na listę znanych zaufanych hostów.
źródło
Jeśli ktokolwiek inny próbuje tego, najbardziej pozytywna odpowiedź powinna zadziałać. Jeśli jednak masz problemy, być może przeglądarka zapisała ŻĄDANIE w pamięci podręcznej. Aby potwierdzić, dołącz ciąg zapytania.
źródło