Допустим, мое веб-приложение действует от имени пользователей, которые передают свои учетные данные моему приложению, чтобы приложение могло выполнять вызовы API к сторонней службе. Кстати, это для публикации предложений продуктов на этом стороннем сайте (немного похожем на eBay, но в меньшем масштабе).
Теперь одним из очень удобных способов упростить эту публикацию было бы повторное использование сложной веб-формы, которую сторонняя служба должна принимать предложения продуктов для аутентифицированных пользователей. Идея состоит в том, чтобы заполнить свою веб-форму и перенаправить на нее клиентский браузер, чтобы пользователь мог редактировать там вещи, используя сложную и знакомую веб-форму. Это будет лучший пользовательский опыт и наименьшая работа по реализации.
Однако это не документированный способ сделать это. Более того, это не работает простым способом, как заполнение полей формы из параметров запроса (GET или POST). Веб-форма так не работает.
Может есть альтернатива. Мое приложение может открыть сеанс со сторонним приложением от имени пользователя, отправить все данные, чтобы они были сохранены в их базе данных, а затем отправить браузеру пользователя все данные, необходимые для того, чтобы взять на себя сеанс, который мое серверное приложение открыло на его от имени. Обратите внимание, что я еще не пробовал это; и я полагаю, что это может потерпеть неудачу, если стороннее приложение привяжет сеанс к IP-номеру (что, независимо от того, правильно это или нет, может сделать приложение).
Но разве нельзя было бы, чтобы серверная программа, открывающая сеанс HTTP, записывала всю информацию, необходимую для передачи этого сеанса, в документ HTML/Javascript и отправляла этот документ в браузер пользователя, где Javascript выполнял и собирал запрос, такой как как составлено при использовании браузера на сторонней форме напрямую, что я наблюдал с помощью HttpFox?
Вся информация, то есть все HTTP; явно не возможно передать IP-номер сервера клиенту... Но все куки и параметры. Затем Javascript, выполняемый в браузере, должен будет использовать информацию, которую я каким-то образом передам в документе (возможно, в части сценария), чтобы составить запрос на сторонний веб-сайт, который идет прямо в сеанс, открытый серверным приложением. . Это будет означать, что документ, происходящий из моего домена, будет устанавливать файлы cookie (добавлять заголовки запроса), чтобы затем браузер пользователя выполнял этот запрос.
Другими словами, технически возможно передать сеанс от сервера к клиенту?
Как бы вы сделали это в Javascript?
Обновлять
Согласно ответам на другой вопрос: Вы не можете устанавливать файлы cookie для другого домена. Разрешить это было бы огромной брешью в безопасности. Показывает, что я не разработчик внешнего интерфейса.
Пока не сдаюсь. Вот объект XmlHttpRequest
. Может быть, этим можно злоупотребить в своих злых целях?
Второе обновление
Поэтому я экспериментировал с XmlHttpRequest
. Плохие новости (для меня и для этого конкретного случая): похоже, что это не сработает и с использованием XmlHttpRequest
, потому что (с использованием текущего Firefox) мои красиво подделанные запросы переписываются в соответствии с тем, что, по-видимому, должно стать Стандарт W3C по совместному использованию ресурсов между источниками, поэтому заголовок Cookie
просто удаляется, а фиктивные заголовки Moin
и Gurke
удаляются. уменьшено до Access-Control-Request-Headers: gurke,moin
. Честно говоря, это портит игру по-крупному. Я разочарован.