Измените XMLHttpRequests, чтобы сделать их междоменными - PullRequest
0 голосов
/ 22 апреля 2011

Я работаю над прокси для приложения.Мне нужно преобразовать все вызовы AJAX на определенной странице в междоменную область, чтобы мой прокси-сервер мог выполнять эти вызовы ajax.

Я искал возможность связывания JQuery.beforeSend с окном и у меня есть три вопроса:

  1. Как я могу добавить дополнительный параметр dataType: jsonp;для всех вызовов AJAX, которые присутствуют на странице.

  2. Будет ли это связывать функцию со всеми запросами XMLHttp или только с запросами, выполняемыми через функции jQuery $ .ajax, $ .get, $ .post и т. Д.

  3. Если я добавлю dataType: jsonp;это добавит это только к вызовам, выполненным через jQuery, или ко всем вызовам, выполненным из любой библиотеки или исходящим из браузера

Есть ли лучший способ сделать это.Любые другие рекомендации, чтобы преодолеть эту проблему.Поскольку я не буду знать внешний HTML-код, изменить URL-адрес, который он вызывает через AJAX, сложнее, и, следовательно, маршрутизация его через мой прокси-домен не является предпочтительным способом в моем случае.

Спасибо

Ответы [ 2 ]

1 голос
/ 22 апреля 2011
  1. Вы можете скрыть существующий метод jQuery ...

    var jQueryAjax = $.ajax;
    
    $.ajax = function(settings) {
       settings.type = 'jsonp';
       jQueryAjax(settings);
    }
    

    I думаю, это должно работать.

  2. ajax() - это низкоуровневый интерфейс для запросов AJAX в jQuery, но я не уверен, что они его вызывают.getJSON(), кажется, вызывает get().

  3. Добавление jsonp будет полезно только в том случае, если используемый вами сервис поддерживает JSONP.

0 голосов
/ 22 апреля 2011
  1. установить тип данных в jsonp (dataType: "jsonp")
  2. С помощью jsonp вы можете обрабатывать только запрос GET, см. 3.
  3. Только для вызова, где вы добавили jsonp в качестве типа данных
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...