Междоменный POST со встроенной безопасностью

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

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

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

Как лучше всего этого добиться?

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

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

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

Идеи:

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


person tskuzzy    schedule 04.08.2011    source источник
comment
Я бы спросил, находятся ли оба домена на одном сервере. В таком случае забудьте о доменах и поместите файл в тот каталог, где он вам нужен.   -  person Alfonso Rubalcava    schedule 04.08.2011
comment
Нет, они на разных серверах. Проблема в том, что данные используются как на сайте A, так и на сайте B.   -  person tskuzzy    schedule 04.08.2011
comment
а если закачать файл на C? ... (Amazon S3 или что-то в этом роде?)   -  person Alfonso Rubalcava    schedule 04.08.2011


Ответы (1)


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

Access-Control-Allow-Origin:* 

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

person lovesh    schedule 04.08.2011