none
Про кроссдоменный AJAX-запрос к обычному REST (на ASP.Net MVC) из aspx-страницы Sharepoint RRS feed

  • Вопрос

  • Наткнулся на интересный вопрос.
    Делаю кроссдоменный AJAX-запрос к обычному REST (на ASP.Net MVC) из html-страницы, размещённой на хостинге Sharepoint-сервера. Всё работает, данные подтягиваются:

    $.support.cors = true;
                $.ajax({
                    type: 'GET',
                    crossDomain: true,
                    withCredentials: true,
                    url: uri,
                    contentType: 'application/json; charset=utf-8',
                    headers: {
                       'Access-Control-Allow-Origin' : '*'
                    },
                    dataType: 'json',
                    cache: false,
                    processData: false,
                    success: function (data, textStatus) { ... },
                    error: function (responseData, textStatus, errorThrown) { ... }

                });

    Абсолютно этот-же Javascript-код из-под стандартной ASPX-страницы Sharepoint-а выдаёт error с нулевым кодом ошибки.
    Кто-нибудь знает, в чем может быть дело?

    16 ноября 2017 г. 19:01

Ответы

  • Расхождение происходило только для MS IE. Браузер Opera ошибку выдавал в обоих случаях.
    Проблема в том, что при кроссдоменном AJAX-запросе к GET и POST добавляется OPTIONS.
    Обыкновенный REST-MVC такое обрабатывать не умеет, так что Sharepoint не при чем.

    Решил проблему оснащением серверного кода REST сервиса библиотекой CORS (страница "Enabling Cross-Origin Requests in ASP.NET Web API 2")

    21 ноября 2017 г. 15:28

Все ответы

  • В SharePoint внешние запросы с обычных .aspx страниц запрещены по безопасности. Можно использовать их в Addin приложениях, там есть возможность добавить url на ваш сервис в список разрешенных. Вот неплохой пример 
    20 ноября 2017 г. 10:19
  • В SharePoint внешние запросы с обычных .aspx страниц запрещены по безопасности. Можно использовать их в Addin приложениях, там есть возможность добавить url на ваш сервис в список разрешенных. Вот неплохой пример 

    Да ну, что за глупость. Необходимо просто в приложении MVC REST разрешить такие запросы. Шарик тут получатель. В Global asax  Application_BeginRequest добавляем что-то типа:  

     HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin",
     HttpContext.Current.Request.Headers["Origin"] ?? "*");
     HttpContext.Current.Response.AddHeader("Access-Control-Allow-Credentials", "true");

    Если более тонко то загуглите Access-Control-Allow-Origin, тем полно.

    20 ноября 2017 г. 11:26
  • Расхождение происходило только для MS IE. Браузер Opera ошибку выдавал в обоих случаях.
    Проблема в том, что при кроссдоменном AJAX-запросе к GET и POST добавляется OPTIONS.
    Обыкновенный REST-MVC такое обрабатывать не умеет, так что Sharepoint не при чем.

    Решил проблему оснащением серверного кода REST сервиса библиотекой CORS (страница "Enabling Cross-Origin Requests in ASP.NET Web API 2")

    21 ноября 2017 г. 15:28