2009-08-26 7 views
3

J'ai une requête XHR qui réussit en FF3.5 mais qui semble échouer quand elle est faite dans Safari 4. Je regarde les requêtes xhr dans le débogueur dans Safari, et Firebug dans Firefox. Donc, sur le service backend en cours d'exécution, si le nom d'utilisateur et le mot de passe sont manquants dans le paramètre POST, le service génère une erreur 500. Si les paramètres sont là (même s'ils sont incorrects), cela donne 200 ou 40x selon l'erreur.Comment déboguer des requêtes XHR POST dans Safari 4?

Quoi qu'il en soit, donc avec le même code, il fonctionne pour les navigateurs non-Safari. Safari obtient l'erreur 500 comme l'utilisateur/passe ne sont pas transmis. Comme j'examine les demandes dans le débogueur, il ne semble pas qu'il affiche des données POST dans les journaux.

Existe-t-il une option que je dois activer, ou comment débugger ces demandes dans Safari 4?

+0

Avez-vous des contenus dans le corps de la réponse? Même un espace "" ""? –

+0

Pouvez-vous coller le code approprié? – kangax

Répondre

5

Si vous faites référence à Safari "Web Inspector": il n'affiche en effet pas les données POST lorsqu'il est envoyé avec Ajax. J'utiliserais un renifleur de paquets comme Wireshark (mais juste parce que je l'utilise aussi pour d'autres choses), ou un debugging proxy.

Quelques choses à vérifier avec votre POST: vous invoquez setRequestHeader pour définir les en-têtes HTTP nécessaires, comme Connection, Content-Type et Content-Length? Et comme votre code fonctionne avec Firefox, je suppose que vous êtes en train de définir le contenu POST en utilisant send? Postez votre code dans JS Bin s'il vous plaît!

(Juste pour les archives. En plus de permettre à l'débogage par le menu defaults.write, Safari 4 a également un menu Développement que vous pouvez simplement activer dans les préférences avancées choisissez « Afficher Web Inspecteur ⌥⌘I » et Vous devriez être capable de voir les demandes et les réponses sur l'onglet Ressources Assurez-vous de sélectionner "Trier par heure de début" Si le XHR est envoyé via GET, il faut évidemment regarder l'URL de la demande elle-même, ce qui est bien montré. Pour le POST, les en-têtes de demande sont affichés, mais les données POST manquent cruellement, mais je n'ai jamais utilisé le menu de débogage .)

+0

Je recevais une erreur de 500 serveurs dans Safari, mais 'xhr.setRequestHeader (" Content-Type ", file.type);' a fait l'affaire. Merci! –

2

f aujourd'hui (Safari 7.1) les données de demande POST est présent dans la barre de droite si vous sélectionnez un tel (dossier dans un requêtes XHR sous les ressources onglet) XHR:

Select an XHR from the Resources Tab in Safari Web Insepctor

Questions connexes