Prawidłowa obsługa żądań CORS jest nieco bardziej skomplikowana. Oto funkcja, która będzie reagować pełniej (i prawidłowo).
/**
* An example CORS-compliant method. It will allow any GET, POST, or OPTIONS requests from any
* origin.
*
* In a production environment, you probably want to be more restrictive, but this gives you
* the general idea of what is involved. For the nitty-gritty low-down, read:
*
* - https://developer.mozilla.org/en/HTTP_access_control
* - http://www.w3.org/TR/cors/
*
*/
function cors() {
// Allow from any origin
if (isset($_SERVER['HTTP_ORIGIN'])) {
// Decide if the origin in $_SERVER['HTTP_ORIGIN'] is one
// you want to allow, and if so:
header("Access-Control-Allow-Origin: {$_SERVER['HTTP_ORIGIN']}");
header('Access-Control-Allow-Credentials: true');
header('Access-Control-Max-Age: 86400'); // cache for 1 day
}
// Access-Control headers are received during OPTIONS requests
if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') {
if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_METHOD']))
// may also be using PUT, PATCH, HEAD etc
header("Access-Control-Allow-Methods: GET, POST, OPTIONS");
if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']))
header("Access-Control-Allow-Headers: {$_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']}");
exit(0);
}
echo "You have CORS!";
}
Linux server
,IIS
z jakiegoś powodu po prostu nie działało, nie wiem, czy to mój hosting, czy po prostu nie jest odpowiedniIIS
Otrzymałem ten sam błąd i naprawiłem go za pomocą następującego kodu PHP w moim skrypcie zaplecza:
źródło
Wiele opisów w całym Internecie nie wspomina, że określenie
Access-Control-Allow-Origin
nie wystarczy. Oto kompletny przykład, który działa dla mnie:źródło
Po prostu udało mi się uzyskać dropzone i inną wtyczkę do pracy z tą poprawką (backend angularjs + php)
dodaj to do swojego upload.php lub tam, gdzie chciałbyś wysłać swoje żądanie (na przykład, jeśli masz upload.html i musisz załączyć pliki do upload.php, a następnie skopiuj i wklej te 4 wiersze). Również jeśli używasz wtyczek / dodatków CORS w chrome / mozilla, pamiętaj, aby przełączać je więcej niż jeden raz, aby CORS był włączony
źródło
Jeśli chcesz stworzyć usługę CORS z PHP, możesz użyć tego kodu jako pierwszego kroku w pliku, który obsługuje żądania:
źródło
CORS może stać się bólem głowy, jeśli nie zrozumiemy poprawnie jego działania. Używam ich w PHP i działają bez problemów. odniesienie tutaj
źródło
Tyle kodu działa dla mnie, gdy używam angular 4 jako strony klienta i PHP jako strony serwera.
źródło
to powinno działać
źródło
dodaj ten kod w .htaccess
dodaj w nagłówku niestandardowy klucz uwierzytelniania, taki jak app_key, auth_key..etc
źródło
W systemie Windows wklej to polecenie w oknie uruchamiania , aby przetestować kod
chrome.exe --user-data-dir = "C: / Chrome dev session" --disable-web-security
źródło