Nano Hash - криптовалюты, майнинг, программирование

Передать HTTP-сессию для стороннего сайта с сервера на клиент

Допустим, мое веб-приложение действует от имени пользователей, которые передают свои учетные данные моему приложению, чтобы приложение могло выполнять вызовы 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. Честно говоря, это портит игру по-крупному. Я разочарован.


  • OAuth решает эту проблему. Если сайт, похожий на ebay, поддерживает OAuth, у вас есть решение. В противном случае это невозможно, за исключением ошибок безопасности на сайте, похожем на ebay. 10.02.2012

Ответы:


1

Ладно, сдаюсь. То, что я хочу сделать, невозможно. Причиной этого является так называемая политика одного и того же источника, призванная сделать браузеры более безопасными. См. этот другой ответ для некоторых указателей. И, похоже, я ошибся в своей оценке рабочего проекта W3C по совместному использованию ресурсов между источниками, который позволяет делать исключения из политики одного и того же происхождения. Так что, если бы это было широко реализовано, это могло бы быть жизнеспособным. Но в целом в этой попытке слишком много «если» и неопределенностей.

Хе-хе. Получил это работает. :)

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

<body onload="document.forms[0].submit()">
<form action="..." method="post">
...

Затем клиент входит в свою собственную сессию. Работает отлично. Пока они не меняют интерфейс. Я настроил тесты, чтобы отслеживать их форму и предупреждать меня о необходимости принять меры, если они меняют вещи несовместимым образом.

09.02.2012
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..