Почему я получаю 403 запрещено при обращении к внешнему контроллеру MVC на основе IIS, возвращающему результат JSON - PullRequest
3 голосов
/ 03 декабря 2009

У меня есть приложение, предоставленное третьей стороной. Единственный способ изменить поведение - это скрипт на стороне клиента. У меня в приложении есть экран, который выполняет некоторые специальные запросы, но не предоставляет никаких средств для сохранения настроек. Вместо того чтобы каждый раз заново вводить настройки, я вводил некоторые элементы через jQuery, чтобы позволить им сохранять свои запросы.

У меня есть другой внутренний сайт asp.net MVC, в который я добавил контроллер с методом GetQueryList (строка User).

Из браузера все работает нормально, я получаю возвращенный результат, но из скрипта я получаю 403. Я уже два дня гоняюсь за этим.

Я перебрал методы, чтобы все заработало.

Вот код контроллера:

<AcceptVerbs(HttpVerbs.Get)> _ 
Public Function GetQueryList(ByVal user as String) as JsonResult   
    Return Me.Json(String.format("Hello {0}", user))
End Function

Код клиента:

    $.getJSON("http://myservername.org/ClientQuery.mvc/GetQueryList",
        null
        , function (data) {
            alert(data);
        }
    );

Если у кого-нибудь есть идеи, это может спасти те маленькие волосы, которые у меня остались.

1 Ответ

0 голосов
/ 03 декабря 2009

Вы получаете эту ошибку, потому что браузеры реализуют Одинаковую политику происхождения , которая блокирует запросы AJAX к другим доменам.

Вы можете создать локальный класс AJAX для прокси внешнего запроса AJAX от имени пользователя, используя .NET WebRequest . Обратите внимание, что в WebRequest нет конструктора, и вместо него используется фабричный метод WebRequest.create(Uri).

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