JQuery междоменная проблема, когда попробуйте положить запрос в - PullRequest
0 голосов
/ 16 сентября 2011

Я пытаюсь сделать запрос PUT на JQUERY к сервису RESTFULL, когда пытаюсь сделать запрос на URL с localhost (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 ...');

    }
});

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

Я пытаюсь решить эту проблему, добавив разрешение put для события 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' без успеха.

Спасибо и всего наилучшего

1 Ответ

1 голос
/ 16 сентября 2011

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

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

...