получение заголовка местоположения вызова ajax с прототипом javascript - PullRequest
0 голосов
/ 15 июля 2009

В моем приложении javascript (использующем прототип) мне нужна некоторая информация со стороннего сервера, этот сервер иногда требует веб-взаимодействия с пользователем, и по этой причине он отправляет 302 http-код с новым URL-адресом в заголовке Location.Я хочу перехватить этот новый URL, чтобы открыть его в отдельном окне, однако метод getHeader ('Location') всегда возвращает ноль.Любая идея???Это упрощенная версия моего кода:

UPDATE = function(){
new Ajax.Request(proxy_url,{
    method: 'post', 
    parameters: "p1=1&p2=2",
    on302: function(response){
        OpenURLfromLocation(response);
    },

    onSuccess: function(transport){
        alert("OK");
    }

});}
OpenURLfromLocation = function(response){
alert(response.getHeader('Location'));
}

Прокси-сервер ajax работает правильно, и я вижу на firebug, что он работает правильно, пока не попытается восстановить местоположение из заголовка.

Ответы [ 2 ]

1 голос
/ 15 июля 2009

Большинство браузеров считают запрос стороннего URL-адреса из ajax (XMLHttpRequest) нарушением безопасности. http://www.xml.com/pub/a/2005/11/09/fixing-ajax-xmlhttprequest-considered-harmful.html

Возможно, вам следует рассмотреть возможность запроса этого через прокси-сервер или другие средства (например, curl в php), которые делают запрос javascript локальным.

Не уверен, если это 100% ответит на ваш вопрос, но, вероятно, также следует рассмотреть в вашем случае здесь.

0 голосов
/ 15 июля 2009

Прошло много времени с тех пор, как я использовал Prototype, но для реального объекта XMLHttpRequest имя метода - getResponseHeader. Однако если вы контролируете ответ сервера, почему бы просто не вернуть новый URL в теле ответа?

В качестве примечания: если вы добавляете «местоположение» в заголовок ответа, отправляемого обратно с сервера, соглашение заключается в том, чтобы все, что вы добавляете в заголовки, добавлялось «X-», так что вы должны иметь "X-Location"

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