http://www.diigo.com/tools/diigoletКаким образом букмекеры diigolet обходят межсайтовый скриптинг?
Diigolet по существу позволяет использовать букмарклет для закладки сайтов. С помощью букмарклета, который я создаю, мне также нужно передать текущий URL-адрес сайта, на котором пользователь подключен к моему серверу. Каждый раз, когда я пытаюсь это сделать, я получаю ошибку межсайтового скриптинга.
Кто-нибудь знает, как обойти это, как диголет?
Они определенно используют инъекцию скрипта. Этот ответ был бы лучше, если бы вы показали, используется ли JSONP, более конкретная техника. –
@Matthew: Вы правы - они жестко задают имя своей функции обратного вызова. К сожалению, я не могу легко показать конкретные строки кода, потому что он минимизирован. Я полагаю, вы могли бы получить некоторое представление о том, как это работает, глядя на панель Firebug Net или Tamper Data. – PleaseStand
Кому-то, кому интересно, ваш сервер должен вернуть обратный вызов в этом формате: если он передан, «callback = callBackThisFunction», тогда серверу нужно вернуть «callBackThisFunction (JSON HERE)». В Django это будет: return HttpResponse (request.GET ["callback"] + '(' + simplejson.dumps (jsonstring) + ')'). Предполагается, что вы используете команду JSON.ajax() и задаете dataType = "JSONP". ПРИМЕЧАНИЕ: request.GET ['callback'] в этом примере будет равен «callBackThisFunction». – Yoshi9143