Jquery Cross-domain Проблема при попытке ввода запросов

Я пытаюсь сделать запрос PUT на JQUERY для службы RESTFULL, когда пытаюсь сделать запрос на URL-адрес с локальным хостом (http://localhost/Domain), запрос работает. Но при изменении URL-адреса на какой-либо ip (http://192.123.32.3) операция на сервере не срабатывает.

$.ajax({
    type: "PUT",
    url: urlOperation,
    dataType: "json",
    contentType: "application/json",
    data: $.toJSON(submitVote),        success: function (result) 
    {
      alert('Great ...');

    }
});

Ошибка в хроме: «Метод PUT не разрешен Access-Control-Allow-Methods».

Я попытался решить эту проблему, добавив разрешение на размещение в событии Application_beginRequest примерно так:

private void EnableCrossDmainAjaxCall()
        {
            HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin", "*");
            if (HttpContext.Current.Request.HttpMethod == "OPTIONS")
            {
                HttpContext.Current.Response.AddHeader("Access-Control-Allow-Methods", "GET, POST, PUT");
                HttpContext.Current.Response.AddHeader("Access-Control-Allow-Headers", "Content-Type, Accept");
                HttpContext.Current.Response.AddHeader("Access-Control-Max-Age", "1728000");
                HttpContext.Current.Response.End();
            }
        } 

После прочтения документации jquery.Ajax я безуспешно пытался добавить свойство crossDomain='true'.

Спасибо и с уважением


person mastervv    schedule 16.09.2011    source источник


Ответы (1)


Браузер сделает все возможное, чтобы заблокировать междоменные запросы. Вы можете использовать iframe для запросов ajax или вы также можете использовать сервер, на котором работает страница, для прокси-запроса для вас.

Надеюсь, это поможет, возможно, вы можете проверить, как jQuery обрабатывает crossDomain='true', если не задействован iframe, он просто не будет работать во всех браузерах.

person Shawn Khameneh    schedule 16.09.2011
comment
Мне интересно, почему я могу сделать запрос «POST», но когда пытаюсь «PUT», какая разница для междоменной проблемы !!? - person mastervv; 16.09.2011
comment
PUT находится в протоколе HTTP, определенном W3C, я не совсем уверен, что вам сказать. Я также слышал о том, что многие люди получают междоменные запросы для работы во всех браузерах, кроме Chrome. - person Shawn Khameneh; 16.09.2011