Подтвердить что ты не робот

Убедитесь, что в SQL Server MVC используется сервер запросов URL-адресов.

есть ли способ определить, является ли запрос запросом ресурса Angular (1.1.5) $. Я очень ищу метод "Request.IsAjaxRequest()" для этого типа запроса.

Я рассматриваю это как в HandleUnauthorizedRequest избыточного авторизованного атрибута. Мне нужно установить результат контекста для некоторого json, если запрос Ajax или Angular или что-то еще, если нет.

4b9b3361

Ответ 1

Я плохо знаю MVC3, но вы можете настроить пользовательский заголовок для всех запросов от AngularJS.

Затем на стороне сервера вам просто нужно получить этот заголовок и сделать то, что вы хотите, с запросом от angular.

Чтобы пользовательский заголовок в AngularJS просто сделал это:

angular.module('myModule', [])

    .config(['$httpProvider', function($httpProvider) {

        $httpProvider.defaults.headers.common["FROM-ANGULAR"] = "true";

    }])

Для использования X-Requested-With вы тоже должны это сделать:

$httpProvider.defaults.headers.common["X-Requested-With"] = 'XMLHttpRequest';

Он больше не установлен по умолчанию, потому что большая часть сообщества должна удалить этот заголовок, чтобы включить запрос CORS

Ответ 2

Ответ на

@Thomas Pons хороший и сделать AngularJS запрос стандартным с настройками по умолчанию в Интернете. Но для большого приложения, с несколькими модулями angular, я считаю громоздким установить это для каждого модуля.

Не только это, но, возможно, вам нужно проверить, следует ли отвечать с ответом JSON вне запроса angular. В этом случае я предпочитаю проверять заголовок запроса Accept:

var accepted = HttpContext.Request.Headers["Accept"].Split(',');

if (accepted .Any(x => x == "application/json"))
{
    // Send your JsonResult here
}
else
{
    // Send your Html/Content result here
}