2013-02-16 2 views
0

Я знаю, что такое букмарклет, то есть я знаю, как его создать, и что он может получить доступ к странице, которую просматривает пользователь.Как работают букмарклеты в отношении запросов на кросс-поиск - Требуется ли корс?

Я не понимаю, как отправить информацию с этой страницы на мой сервер.

Когда я делаю ajax-вызов своего сервера из букмарклета (предположим, что это возможно), как он узнает, что букмарклет принадлежит мне, то есть не является запросом на перекрестный поиск?

Или это возможно? Должен ли я использовать корс?

Или я могу использовать букмарклет с простым вызовом ajax?

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

+2

Закладки запускаются в контексте текущего окна. Это означает, что они могут вводить скрипт на страницу из внешнего источника без проблем. –

+0

Вы можете просто использовать вызовы JSONP-esque так же, как вы бы вводили скрипты. –

+0

Было бы существенно проще настроить, чем CORS для вашего случая, но последнее также является опцией. –

ответ

1

Как он узнает, что букмарклет принадлежит мне, то есть не является запросом на перекрестный поиск?

Сервер не знает. В браузере все равно. Код и все, что он делает, обрабатываются так, как если бы он был родной частью страницы. (Вы можете сообщить своему серверному коду все, что хотите рассказать об этом, но это не имеет значения.)

Или это даже возможно ... получить некоторую информацию из любой страницы/домена, на котором пользователь и отправить его на мой сервер?

Если вам нужно отправить данные, вы можете использовать обычный старый POST через форму или GET через форму или добавленный скрипт или даже объект IMG. Чтобы опубликовать форму, создайте iframe, чтобы местоположение главной страницы не изменилось при отправке.

Если вы хотите получить данные обратно, есть JSONP или AJAX + CORS (в частности, заголовок Access-Control-Allow-Origin). Вам даже не нужно использовать JSONP в строгом смысле слова. Это всего лишь стандарт для передачи данных. Вместо того, чтобы возвращать код, который делает один вызов функции с аргументом JSON, ваш сервер может так же легко вернуть любой код JavaScript, который вы хотите выполнить.

+0

'Если вам нужно отправить данные, вы можете использовать обычный старый POST через форму или GET через форму или добавленный скрипт или даже объект IMG. Чтобы опубликовать форму, создайте iframe, чтобы местоположение главной страницы не менялось при представлении. '| Так технически кто-то может опубликовать мой домен? Хотите убедиться, что я понимаю запросы на кросс-поиск. – 2013-02-19 21:12:35

+0

Да, любой может опубликовать ваш домен. Это фактически открывает одну из самых упущенных проблем безопасности большинства веб-сайтов под названием «подделка запросов на межсайтовый сайт». Как правило, это предотвращается (если это предотвращено) путем включения маркера безопасности в авторизованных формах, которые требуются обработчиком действий формы, прежде чем поданные данные будут приняты. –

+0

почему бы это назвать подделкой, вы просто отправляете сообщения из любого места, нет никаких трюков. – 2013-02-20 15:31:59