Lidar com solicitações CORS corretamente é um pouco mais envolvido. Aqui está uma função que responderá mais completamente (e adequadamente).
/**
* 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
, emIIS
, por alguma razão simplesmente não funciona, eu não sei se é a minha hospedagem ou apenas não é adequado paraIIS
Eu recebi o mesmo erro e o corrigi com o seguinte PHP no meu script de back-end:
fonte
Muitas descrições em toda a Internet não mencionam que especificar
Access-Control-Allow-Origin
não é suficiente. Aqui está um exemplo completo que funciona para mim:fonte
Eu simplesmente consegui fazer com que o dropzone e outro plug-in funcionassem com essa correção (angularjs + php back-end)
adicione isso no seu upload.php ou para onde você enviaria sua solicitação (por exemplo, se você tiver o upload.html e precisar anexar os arquivos ao upload.php, copie e cole essas 4 linhas). Além disso, se você estiver usando plugins / addons CORS no chrome / mozilla, certifique-se de alterná-los mais de uma vez, para que o CORS seja ativado
fonte
Se você deseja criar um serviço CORS a partir do PHP, pode usar este código como a primeira etapa do seu arquivo que lida com as solicitações:
fonte
O CORS pode se tornar uma dor de cabeça, se não entendermos corretamente seu funcionamento. Eu os uso em PHP e eles funcionam sem problemas. referência aqui
fonte
Esse código funciona para mim ao usar angular 4 como lado do cliente e PHP como lado do servidor.
fonte
isso deve funcionar
fonte
adicione este código em .htaccess
adicione chaves de autenticação personalizadas no cabeçalho, como app_key, auth_key..etc
fonte
No Windows, cole este comando na janela de execução por algum tempo para testar o código
chrome.exe --user-data-dir = "C: / Chrome dev session" --disable-web-security
fonte