Важные уточнения
1) нет доступа к коду на сервере, на который постим
2) нет общего наддомена, то есть связать нужно mysite.com и vk.com
3) нужно получить ответ
4) постить нужно файл (картинка)
5) нужна кросс-браузерность, решение «только для последних версий Firefox и Chrome» не подходит
6) запрос нужно выполнить средствами JavaScript'a («проксирование» запроса на нашем сервере — на крайний случай)
Собственно, задача
Находимся в IFrame, загруженном с нашего сервера 188.*.*.* на сайт vk.com, есть файл-картинка, скаченная с нашего сервера, есть урл типа «abc.vc.com/upload?...», вот по этому адресу нужно POST-запросом залить наш файл.
Что накопал сам
Весь день гуглил-копал, вот некоторые итоги (опираясь на «классификацию» отсюда
habrahabr.ru/blogs/javascript/120336/):
1) postMessage — не кроссбраузерно
2) JSONP, динамическое создание тега script, jQueiry.ajax — это все только про GET-запросы
3) CORS — не вполне усвоил что это и как работает, но точно не кроссбраузерно
4) document.domain methods — работает только если есть общий наддомен, не подходит
5) window.name Transport — тоже не вполне понял суть метода, но картинку так не передать, похоже
6)
Server-side proxy — пока это вроде бы единственный жизнеспособный вариант, но его осnавлю на крайний случай, если не найдется JS-решение
7) CRAZY IFRAME STUFF — весьма своеобразный хак, но опять же это кажется про GET-запрос, картинку не запостить
8) flash — в айфрейме у нас лежит флешка, запостить из нее нельзя, опять же, из-за политик безопасности — нашего домена нет в «abc.vc.com/crossdomain.xml».
9) easyXDM — не подходит, т.к. там нужен доступ к коду на обоих серверах
Есть метод примерно такой: создать скрытый айфрейм, сгенерить форму и сделать ее submit указав target'ом этот айфрейм — тут, как я понял, я не смогу посмотреть ответ опять же из-за разницы доменов. Или это тоже решение? Вот тут
habrahabr.ru/blogs/development/110506/#habracut у автора ведь вроде та же задача?
В общем, пока я вижу только вариант с проксированием запроса у себя на сервере. Ну и зыбкая вера есть в скрытый айфрейм. Еще варианты есть или все же такие ограничения безопасности не просто так придуманы? =)
P.S. Учитывая специфику конкретной задачи (приложение вконтакте), возможен такой вариант — залить флешку на сервера vk.com (адрес будет какой-то такой: «xxx123.vc.com/qwerty.swf»), грузить ее в айфрейм оттуда и тогда при выполнении запроса, теоретически, все будет ок, т.к. в «abc.vc.com/crossdomain.xml» разрешены запросы с "*.vc.com" — тоже относительно жизнеспособный вариант, но не подходит из-за завязанности на особенности вконтакте, а эти наработки нужно будет еще использовать для других платформ.