Клиент HTTP Post на внешние сайты - PullRequest
1 голос
/ 03 августа 2010

Существует ли какой-либо веб-язык, который позволяет самому клиенту создавать сообщения HTTP на внешних сайтах.

Я знаю, что JavaScript делает это с XMLHttpRequest, но он не разрешает междоменную публикацию, если только домен получателяхочет разрешить отправляющий домен.

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

Возможно ли это?Я пробовал cURL, но, похоже, он создает сообщение HTTP сервера, а не сообщение HTTP клиента.


Редактировать:

Чуть больше понимания того, что я пытаюсь сделать:

Я пытаюсь отправить JSON на веб-сайт, используя сеанс пользователя (я сказал, что куки, но я полагаю, что это сеансы PHP, которые, я думаю, я все еще считаю куки).

Веб-сайт НЕ проверяет реферала (плохая безопасность # 1). Я могу выполнить javascript и html на веб-странице, используя мою личную домашнюю страницу (плохая безопасность # 2). Код JSON все равно будет работать, даже если тип контентаэто форма (плохая безопасность # 3). Никакой проверки безопасности вообще нет, только проверка сеанса PHP.

Идея формы замечательна, и она работает.Вероятно, опять же, это его JSON.Таким образом, отправив постданные в виде foo = {"test": "123", "test2": "456"} , вся часть foo = испортила их.Плюс формы, кажется, превращают JSON в кодировку форм, поэтому их отправка:

foo =% 7B% 22 * ​​1022 * test % 22% 3A +% 22 * ​​1024 * 123 % 22% 2C +% 22 * ​​1026 * test2 % 22% 3A +% 22 * ​​1028 * 456 % 22% 7D

, когда мне нужно отправить;

{"test":"123", "test2": "456"}

Итак, со всем известным, есть ли лучший шанс отправить JSON или нет?

Ответы [ 5 ]

2 голосов
/ 03 августа 2010

Я так не думаю: вы не получите пользовательские куки-файлы пользователя на стороннем сайте со стороны сервера (из-за политики единого источника) и не сможете отправлять запросы Ajax на сторонний сайт .

Лучшее, что вы можете сделать, это, вероятно, создать <form> (возможно, в <iframe>), указать его на стороннем сайте, заполнить его данными и попросить пользователя отправить его (или автоматически отправить) , Вы не сможете получить результаты запроса программным образом (опять же из-за политики единого происхождения), но, возможно, это удастся - вы все равно можете показать результаты запроса пользователю.

0 голосов
/ 03 августа 2010

Да, вы можете использовать специальную флеш-библиотеку, которая поддерживает междоменные вызовы: Менеджер соединений YUI

Добавлено: не уверен насчет проблемы проверки подлинности cookie ...

0 голосов
/ 03 августа 2010

Клиент не может отправлять сообщения на внешний сайт напрямую;это нарушение основных междоменных моделей безопасности.Исключением является доступ к javascript с помощью JSONP.То, что вы описываете, потребует доступа к cookie-файлам пользователя для другого веб-сайта, что невозможно, поскольку браузер разрешает доступ к cookie-файлам только в пределах одного домена / пути.

Для перекрестного подключения вам понадобится прокси-сервер на стороне сервера.-доменные запросы, но вы по-прежнему не можете получить доступ к внешним файлам cookie: http://jquery -howto.blogspot.com / 2009/04 / cross-domain-ajax-querying-with-jquery.html

0 голосов
/ 03 августа 2010

Вы должны следовать принципам работы OpenID и других систем единого входа.Как работает openID, ваш веб-сайт отправляет некоторый токен службе openID, а взамен получает результат аутентификации.См. Как это работает?раздел здесь

0 голосов
/ 03 августа 2010

Я думаю, что по понятным причинам это не разрешено. Если бы это было разрешено, это помешало бы злоумышленнику публиковать данные формы из браузера этого лица на любом количестве сайтов в каком-то скрытом окне или всплывающем окне.

Если это дизайн вашего приложения, вам нужно переосмыслить то, что вы пытаетесь достичь.

РЕДАКТИРОВАТЬ: Как @Pekka указывал, я знаю, что вы можете отправить форму на удаленный сайт, используя типичные формы отправки. Я имел в виду использование некоторого решения ajax на стороне клиента. Извините за путаницу.

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