Assurez-vous de lire la réponse de SilverlightFox. Il met en évidence une raison plus importante.
La raison principale est que si vous connaissez la source d'une demande, vous voudrez peut-être la personnaliser un peu.
Par exemple, disons que vous avez un site Web qui contient de nombreuses recettes. Et vous utilisez un cadre jQuery personnalisé pour faire glisser des recettes dans un conteneur en fonction d'un lien sur lequel ils cliquent. Le lien peut êtrewww.example.com/recipe/apple_pie
Maintenant, cela renvoie normalement une page complète, un en-tête, un pied de page, un contenu de recette et des annonces. Mais si quelqu'un navigue sur votre site Web, certaines de ces parties sont déjà chargées. Vous pouvez donc utiliser un AJAX pour obtenir la recette que l'utilisateur a sélectionnée, mais pour gagner du temps et de la bande passante, ne chargez pas l'en-tête / le pied de page / les annonces.
Maintenant, vous pouvez simplement écrire un point de terminaison secondaire pour les données, www.example.com/recipe_only/apple_pie
mais c'est plus difficile à maintenir et à partager avec d'autres personnes.
Mais il est plus facile de simplement détecter qu'il s'agit d'une demande ajax effectuant la demande, puis renvoyant uniquement une partie des données. De cette façon, l'utilisateur gaspille moins de bande passante et le site semble plus réactif.
Les frameworks ajoutent simplement l'en-tête car certains peuvent trouver utile de garder une trace des requêtes qui sont ajax et qui ne le sont pas. Mais cela dépend entièrement du développeur d'utiliser ces techniques.
C'est en fait un peu similaire à l'en- Accept-Language
tête. Un navigateur peut demander un site Web, veuillez me montrer une version russe de ce site Web sans avoir à insérer / ru / ou similaire dans l'URL.