AJAX fonctionne si les outils de développement Chrome sont ouverts, mais pas si les outils Web Chrome sont fermés?

Je charge un fichier json via ajax. Si Chrome dev tools est ouvert, tout fonctionne parfaitement. Si Chrome dev tools est fermé, il échoue. Heureusement, dev tools continue de le faire même lorsqu’il est fermé pour que je puisse toujours voir l’exception que je reçois:

Failed to load resource: the server responded with a status of 412 (Precondition Failed) http://localhost/experiments/escape/maps/test.json 

Pourquoi y aurait-il une condition préalable à l’ouverture ou non des outils de développement? En outre, il semble peu probable que l’ouverture et la fermeture des outils de développement puissent affecter le comportement du serveur. Je pense donc que c’est Chrome qui empêche la demande plutôt que le serveur, comme le suggère l’exception.

Malheureusement, dev tools ne suit pas l’activité du réseau lorsqu’il est fermé. Je ne peux donc pas utiliser l’onglet Réseau pour obtenir plus d’informations.

AJAX est géré via JQuery avec le code suivant:

 map.load = function(mapName, tileSource, tileWidth, tileHeight, onLoad) { $.ajax({ url: '../escape/maps/'+mapName+'.json', type: 'post', success: function(mapData) { // there's loads of stuff in here but I don't think it's relevant to the question as the failure prevents the success method from being called. } }); }; 

Ce code ne pose aucun problème dans Firefox et semble donc spécifiquement lié à Chrome Dev Tools. Toutes les suggestions sont les bienvenues car je suis complètement décontenancé!

EDIT: Ok, donc ce n’est pas une faute des outils de développement – j’avais désactivé le cache dans les outils de développement, ce qui permet au script de fonctionner correctement. Pourquoi mon code dépend-il du cache? La désactivation / activation du cache dans Firefox ne pose aucun problème

EDIT2: Ok, je pense que je me rapproche. La condition préalable qui échoue est la condition if-modified-since (le fichier n’a pas changé). Je suppose que chrome envoie cette information pour confirmer l’utilisation ou non de la version mise en cache. Cependant, malgré l’échec de la condition préalable, elle ne charge pas la version mise en cache. J’ai pensé que cela pourrait signifier que le cache était corrompu d’une manière ou d’une autre, donc j’ai effacé le cache. Malheureusement, cela ne résout pas le problème. Le fichier sera chargé avec plaisir une fois, mais la prochaine fois que je serai de retour, je commencerais avec le même problème. Des idées?

@Rondel – Vous l’avez! Le problème était que j’utilisais bêtement “post” pour récupérer un fichier statique. Les demandes de publication n’étant jamais censées être mises en cache, c’est pourquoi Chrome ne les récupère pas. Je ne sais toujours pas pourquoi chrome envoie toujours l’en-tête if-modified-since mais depuis, changer le type de requête pour obtenir est la solution au problème (Désolé, Crome Dev, les outils de développement, pour vous avoir accusé injustement – le problème, comme d’habitude, était mon code!)