Программный способ узнать, поддерживает ли браузер клиента методы PUT / DELETE - PullRequest
0 голосов
/ 08 июля 2011

Есть ли способ узнать, поддерживает ли клиентский браузер методы PUT или SEARCH для использования с запросами JQuery и AJAX?

У меня есть следующий код, и PUT не отображается на стороне сервера для меня в Chromium и Chrome ... Я хотел бы знать, если PUT неподдерживается браузером, как изменить его на POST-запрос ... для обратной совместимости

function do_data(url, action, query) {
try {
    if ($.browser.msie) {
        var xdr = new XDomainRequest();
        if (query !== null) {
            console.log(query);
            xdr.open(action, url + '?' + $.param(query));
        } else {
            xdr.open(action, url);
        }
        xdr.onload = function() {
            var data = $.parseJSON(this.responseText);
            show_data(data);
        };
        xdr.send();
    } else {
        if (query !== null) {
            $.ajax({
                url: url,
                data: query,
                type: action,
                success: function(data) {
                    console.log(data);
                },
                error: function(jqXHR, textStatus, errorThrown) {
                    console.log(textStatus);
                }
            });
        } else {
            console.log(query);
            $.ajax({
                url: url,
                type: action,
                success: function(msg) {
                    console.log(data);
                }
            });
        }
    }
} catch (e) {}
}

Используя приведенный выше код, если я использую "PUT" для Chromium / Chrome, error: function(jqXHR, textStatus, errorThrown) выведет на печатьпросто error.

На стороне сервера я вижу REQUEST_METHOD: OPTIONS, а не PUT.

Просто чтобы подтвердить, для тех, кто сталкивается с этим ... нет программного способа

1 Ответ

0 голосов
/ 08 июля 2011

Обычный способ справиться с отсутствием поддержки PUT и DELETE в большинстве браузеров - это использовать HTTP POST туннелирование. В основном вы используете POST и добавляете реальный VERB к HTTP-заголовку X-HTTP-Method-Override . В сервисе вы проверяете последнее, если не найдено, используйте обычный метод HTTP.

См. здесь для получения дополнительной информации.

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