2014-07-22 4 views
0

Je construis une extension Chrome et essayez de vous connecter quelques demandes: ceux avec des paramètres POST (données texte brut)Chrome webRequest erreur responseBody (POST)

Ce code J'utilise:

var requestFilter = {urls: ["<all_urls>"]}; 
var extraInfoSpec = ['requestHeaders','requestBody','blocking']; // note: without 'requestBody' it works perfectly, but there's no POST data available. 
var handler = function(details) { 
    console.log(details); 
}; 
chrome.webRequest.onBeforeSendHeaders.addListener(handler, requestFilter, extraInfoSpec); 

J'utilise requestHeaders et blocking pour d'autres choses qui ne sont pas dans l'exemple (ne vous inquiétez pas à leur sujet)

Je reçois cette erreur à la page charge: Uncaught Error: Invalid value for argument 2. Property '.1': Value must be one of: [requestHeaders, blocking].

Je develping sous Chrome version 36.0.1985.125 m

Formulaire de documentation webRequest chrome: Stable since Chrome 23. Contains the HTTP request body data. Only provided if extraInfoSpec contains 'requestBody'.

Toute expérience avec cette erreur? Toute solution connue? Comment puis-je resoudre ceci?

+0

Le code que vous avez publié - est-ce dans la page d'arrière-plan ou sur la page de contenu? – FuzzyAmi

+0

C'est dans functions.js (appelé à partir de manifest dans "scripts" param) – Dandy

Répondre

1

Vous écoutez le mauvais événement.

Si vous regardez le documentation, onBeforeSendHeaders ne répertorie pas requestBody dans les détails de rappel. Il est cependant disponible en onBeforeRequest. Donc, si vous avez besoin des en-têtes et du corps, vous devez corréler les deux événements par requestId.

+0

Excellent! C'était en effet une erreur stupide à moi. Merci! – Dandy