Междоменный POST со встроенной безопасностью - PullRequest
1 голос
/ 04 августа 2011

Я управляю сайтом A и хочу иметь возможность POST-данных на сайт B, который размещен на другом поддомене. Теперь у меня есть полный доступ к A, но я не могу изменить B вообще.

Мои требования:

  • поддерживает загрузку файлов
  • не обновляет браузер на POST
  • использует встроенную безопасность Windows
  • работает в IE 7/8 (не требует поддержки других браузеров)

Какой лучший способ сделать это?

Что я пробовал:

В идеале это можно сделать простым вызовом AJAX. Однако текущий стандарт не поддерживает отправку двоичных данных (поддерживается в стандарте XMLHttpRequest уровня 2, который еще не реализован в IE).

Итак, следующая лучшая вещь - это POST к скрытому <iframe> элементу. Сейчас я попробовал это, но сервер на сайте B не будет принимать данные. Я посмотрел на запрос, и единственные расхождения, которые я обнаружил, были URL-адресом реферера и встроенной аутентификацией. URL реферера может быть подделан, что не может быть достигнуто этим методом. Также по какой-то причине аутентификация не обсуждается. Я не уверен на 100%, почему.

Идеи:

Я думаю о создании прокси-страницы на сервере, который я запускаю (сайт A), который перенаправляет запрос на сайт B. Сайт A также использует встроенную защиту. Я не вижу в этом ничего плохого, но я не уверен, что это лучший путь. Будут ли проблемы с аутентификацией, если я переадресую запрос?

1 Ответ

2 голосов
/ 04 августа 2011

Использование прокси - единственное, что может работать в вашем случае. Если вы хотите сделать запрос на получение, тогда это можно сделать с помощью JSONP при условии, что сервер поддерживает JSONP. Для того чтобы взломать <iframe>, сервер должен отправить заголовки как

Access-Control-Allow-Origin:* 

что с тобой не так. Таким образом, использование прокси кажется решением

...