Refus de définir l'erreur "cookie" de l'en-tête non sécurisé dans le navigateur, mais la demande est réussie

J'utilise Angularjs. Lorsque j'ai configuré l'en-tête Cookie avec xhr.setRequestHeader() j'ai l'erreur suivante sur Chrome:

 Refused to set unsafe header "Cookie" 

Cependant, le Cookie est inclus dans la demande et envoyé avec succès au serveur. Je semble avoir configuré tout correctement pour autoriser l'en-tête Cookie sur le serveur et le client:

  • AngularJS: ouvrez une nouvelle fenêtre de navigateur, mais conservez toujours la portée et le contrôleur, et les services
  • Filtre angularjs newline sans autre html
  • Angulaire 2 comment retourner les données de s'abonner
  • Variables d'étendue d'accès à partir d'un filtre dans AngularJS
  • Angularjs ui-router n'atteint pas le contrôleur enfant
  • Firebase - Obtenez toutes les données qui contiennent
  • Pour le serveur, j'ai ces:

     Header add Access-Control-Allow-Credentials "true" 

    Pour le client, je les spécifie:

     withCredentials 

    Pourquoi cette erreur?

  • Défilement de fond dynamique
  • Angular 2 et AmCharts
  • Une div peut-elle être créée pour agir comme une liste déroulante?
  • Accès inattendu à la variable "événement" dans les navigateurs?
  • Est-il possible de passer par valeur par référence en JavaScript?
  • Générer une chaîne aléatoire pour div id
  • 3 Solutions collect form web for “Refus de définir l'erreur "cookie" de l'en-tête non sécurisé dans le navigateur, mais la demande est réussie”

    Vous obtenez cette erreur de Chrome car, selon la spécification XHR , la méthode setRequestHeader ne doit pas configurer les en-têtes avec un nom d'en-tête interdit .

    Selon la spécification:

    Ceux-ci sont interdits afin que l'agent utilisateur reste en plein contrôle.

    Au lieu de cela, pour Angular 1.x, configurez le cookie en utilisant $cookies , et il sera inclus dans les requêtes xhr suivantes.

    Ce «modèle» fonctionne pour moi


    Ouvrez les outils de développement et essayez d'exécuter $.ajax plaçant setRequestHeader dans la méthode beforeSend .


     <?php header('Content-Type: text/html; charset=UTF-8'); header('Access-Control-Allow-Origin: *'); header('Access-Control-Allow-Headers: *'); header('Access-Control-Expose-Headers: *'); header('Access-Control-Allow-Credentials: true'); ?><!doctype html> <html lang="en-US"> <head> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" /> </head> <body> <script defer="defer" src="https://code.jquery.com/jquery-git.js"></script> </body> </html> 

    Prise à partir du HTML5 libéré , et du partage de ressources Cross-Origin de W3C .

    Si vous avez envoyé les cookies, je pense que ce serait assez bien. Ayant "crossDomain: true, withCredentials: true" a résolu le problème de "Refus de définir l'en-tête dangereux" Cookie "" J'ai aussi rencontré. Même si le message d'alerte est toujours là, cependant, j'ai le cookie envoyé et j'ai une réponse correcte.

    JavaScript rend le site Web intelligent, beauté et facile à utiliser.