jquery: невозможно напечатать заголовок ответа ajax (Jquery 1.7.1) - PullRequest
2 голосов
/ 11 января 2012
  $.ajax({
                async:false,
                type: 'POST',
                url: itemURL,
                success: function(data,status,jqXHR) {
                    responseObj  = data;
                    console.log('success function resp');
                    console.log(jqXHR.getAllResponseHeaders());
                },
                error: function(data){
                    responseObj = data;
                },
                data:item,
                dataType: "json",

    });

Вот мой код;я не могу напечатать заголовки ответа;я что-то упустил?все, что выводит на печать - это пустая строка.

Попытка с использованием getResponseHeader ("Location"), это тоже не работает;Я пытаюсь получить заголовок «Location», который возвращается для вызова AJAX.

Однако firbeug показывает все заголовки ответа, включая «Location», который я ищу.1

1 Ответ

2 голосов
/ 04 февраля 2012

Я работал с @Satish, помогая ответить на этот вопрос. В основном это была проблема CORS, но, оказывается, здесь были две проблемы:

1) Сервер должен был добавить «Местоположение» в заголовок ответа Access-Control-Expose-Header, это позволяет клиентам XHR уровня 2 соответствовать дополнительному заголовку.

2) Клиенты WebKit имели ошибку, при которой они игнорировали бы Access-Control-Expose-Header при возврате заголовков для ответа XHR. Это было исправлено в WebKit недавно https://bugs.webkit.org/show_bug.cgi?id=76419,, и мы убедились, что теперь он работает в Safari на основе этого WebKit.

Просто чтобы добавить фон, запрос был POSTing к REST-сервису для создания объекта. Ответ сервера имел статус 201 и сохранял местоположение нового ресурса в заголовке «Местоположение». Поскольку это был запрос CORS, XHR удалил заголовок «Location». Добавление заголовка и обновление до версии WebKit с исправлением исправило эту проблему.

...