CORS et PHP
Posté : 13 juin 2016, 15:26
Salut, pour le lycée on me demande de faire un Webservice.
Mais je n'arrive pas a faire mes requetes en DELETE et PUT.
Pourtant j'active bien dans le code :
Sur l'inspecteur de firefox il me dit:
Blocage d’une requête multi-origines (Cross-Origin Request) : la politique « Same Origin » ne permet pas de consulter la ressource distante située sur http://127.0.0.1/prost/user. (Raison : échec du canal de pré-vérification des requêtes CORS.
A savoir, je fais de la réécriture d'url avec htaccess :
Vous avez une idée d'où a peux venir ?
Voici le fichier index.php entier de mon webservice :
Merci beaucoup !!
Mais je n'arrive pas a faire mes requetes en DELETE et PUT.
Pourtant j'active bien dans le code :
Code : Tout sélectionner
header ( "Access-Control-Allow-Origin: *" );
header ( "Access-Control-Allow-Methods: GET, POST, PUT, DELETE" );
header ( "Access-Control-Allow-Headers: X-Requested-With" );
header ( 'Content-Type: application/json; charset=utf-8' );
Blocage d’une requête multi-origines (Cross-Origin Request) : la politique « Same Origin » ne permet pas de consulter la ressource distante située sur http://127.0.0.1/prost/user. (Raison : échec du canal de pré-vérification des requêtes CORS.
A savoir, je fais de la réécriture d'url avec htaccess :
Code : Tout sélectionner
Options +FollowSymlinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?ws=$1 [QSA]
Voici le fichier index.php entier de mon webservice :
Code : Tout sélectionner
<?php
include_once 'src/config/config.php';
include_once 'src/dao/dao.php';
include_once 'src/model/application.php';
include_once 'src/model/user.php';
include_once 'src/WS/UserWS.php';
include_once 'src/WS/session.php';
include_once 'src/controller/user_controller.php';
// Utilisé pour autoriser les appel Web Service en AJAX depuis toutes les adresses
header ( "Access-Control-Allow-Origin: *" );
// Utilisé pour autoriser les méthodes GET, POST, PUT et DELETE
header ( "Access-Control-Allow-Methods: GET, POST, PUT, DELETE" );
// On autorise les données dans le header
header ( "Access-Control-Allow-Headers: X-Requested-With" );
// On positione l'encodage en UTF-8 sinon json_encode ne fonctionnera pas !
header ( 'Content-Type: application/json; charset=utf-8' );
// var_dump($_GET["ws"]);
function main() {
// SI DEMANDE LES USER
if ($_GET["ws"] == "user") {
$method = $_SERVER ['REQUEST_METHOD'];
// Si la méthode est de type option on ne continue pas l'exécution du script
// Cela arrive avec certains navigateurs
if ($method == "OPTIONS") {
header ( 'Access-Control-Allow-Origin: *' );
http_response_code(405);
exit ();
}
// On appel notre Web Service
UserWS::execute ( $method );
//SI DEMANDE LOGIN
}elseif ($_GET["ws"] == "session"){
$method = $_SERVER ['REQUEST_METHOD'];
if($method !== "GET"){
// HTTP 405 : Method Not Allowed
http_response_code(405);
echo json_encode(false);
}
$login = getServerVariable("PHP_AUTH_USER");
$password = getServerVariable("PHP_AUTH_PW");
if ($login === FALSE || $password === FALSE) {
// Pas d'identifiant on retourne false et HTTP 401 : Unauthorized
http_response_code ( 401 );
echo json_encode ( false );
return false;
}
//if($login !== "toto" || $password !== "password"){
if(session::doAuth($login,$password)){
// Identifiants ok, on retourne true et HTTP 202: Accepted
http_response_code ( 202 );
echo json_encode ( true );
}else{
// Identifiants faux, on retourne false et HTTP 401 : Unauthorized
http_response_code ( 401 );
echo json_encode ( false );
}
}else{
http_response_code(404);
exit();
}
}
function getServerVariable($var) {
if (isset ( $_SERVER [$var] ) && ! empty ( $_SERVER [$var] )) {
return $_SERVER [$var];
}
return false;
}
main();
?>