Отправка данных JSON из расширения браузера Chrome на контроллер MVC - PullRequest
3 голосов
/ 29 января 2011

Я написал расширение для браузера Chrome, которое использует Ajax для отправки данных на контроллер MVC3.Чтобы убедиться, что код контроллера работает, я сначала написал веб-страницу Razor для создания прототипа кода ajax.Этот код работает на веб-странице, модель JSON связывает все.Я опубликовал его на сервере IIS7 с узлом DNS и именем домена.Код все еще работает на тестовой странице.

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.stringify(myData),
        contentType: "application/json; charset=utf-8",
        success: function (result) 
            {
            $('#res').html(result);
            },
        error: function()
            {
            $('#res').html('An error occurred');
            }
        }
    );  
};

Я скопировал эту функцию jQuery в файл Chrome JavaScript и вызвал ее из всплывающего окна с помощью обычной кнопки формы.

  <body onload="buildPopupDom();">
<form>
<h2>Add URL</h2>
<div id='urlDiv'></div>
<p>Comments<br /><textarea id="c1" cols="80" rows="3"></textarea></p>
<p><input type="button" value="Save" id="s1" onclick="addUrl();" /> <input type="button" value="Close" onclick="javascript:window.close();" /></p>
</form>

По какой-то причине сообщения из расширения Chrome вызывают ошибку 404, и мне пришло в голову, что какая-то защита MVC3 XSS или аналогичная блокирует сообщение - или, возможно, что-то в IIS7 (UrlScan не установлен).

1 Ответ

5 голосов
/ 29 января 2011

Для выполнения междоменных вызовов XHR соответствующие разрешения домена должны быть объявлены в манифесте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...