Publication de données JSON à partir d’une extension de navigateur Chrome sur un contrôleur MVC

J’ai écrit une extension de navigateur Chrome qui utilise Ajax pour publier des données sur un contrôleur MVC3. Pour m’assurer que le code du contrôleur fonctionne, j’ai d’abord écrit une page Web Razor pour créer un prototype du code ajax. Ce code fonctionne dans la page Web, le modèle JSON liant tous les éléments. Je l’ai publié sur un serveur IIS7 complet avec l’hôte DNS et le nom de domaine. Le code fonctionne toujours sur la page de test.

function addUrl() { $('#res').html('Adding...'); var myData = { url: $('#urlDiv').html(), comments: $('#c1').val() }; $.ajax( { url: 'http://hostname.domainname/ControllerName/AddUrl', type: "post", dataType: "json", data:JSON.ssortingngify(myData), contentType: "application/json; charset=utf-8", success: function (result) { $('#res').html(result); }, error: function() { $('#res').html('An error occurred'); } } ); }; 

J’ai copié cette fonction jQuery dans le fichier JavaScript de Chrome et je l’ai appelée à partir d’une fenêtre contextuelle via un bouton de formulaire conventionnel.

   

Add URL

Comments

Pour une raison quelconque, les publications de l’extension Chrome entraînent une erreur 404 et je me suis rendu compte qu’une protection XSS MVC3 ou similaire bloque la publication – ou peut-être quelque chose dans IIS7 (UrlScan n’est pas installé).

Afin de faire des appels XHR entre domaines, les permissions de domaine correspondantes doivent être déclarées dans le manifeste.