2010-04-25 4 views
4

Я хочу создать восхитительный букмарклет в Firefox, который закладок текущей страницы с предопределенным тегом.Создайте Delicious Bookmarklet в Firefox с помощью Delicious API

Для доказательства концепции, если я введу этот адрес, он работает:

https://john:[email protected]/v1/posts/add?url=http://www.google.com& 
    description=http://www.google.com&tags=testtag 

Но это как букмарклет нет, я получаю доступ запрещен:

javascript:(

    function() 
    { 
     location.href = 'https://john:[email protected]/v1/posts/add?url=' 
      + encodeURIComponent(window.location.href) 
      + '&description=' + encodeURIComponent(document.title) 
      + '&tags=testtag'; 
    } 

)() 

Является ли это возможно через закладку javascript?

Update: Я попытался это, но все-таки получил доступ запрещен ошибку, так что есть что-то делать с Javascript/Firefox.

javascript:(

    function() 
    { 
     location.href = 'https://john:[email protected]/v1/posts/add?url=' 
      + 'http://www.google.com' 
      + '&description=' + 'http://www.google.com' + '&tags=testtag'; 
    } 

)() 

Update 2: Перепробовав множество вариантов выше и на разных браузерах, я до сих пор не могу пройти мимо отклоненного сообщениядоступа, поэтому предлагает баунти.

ответ

2

Я подозреваю, что это Firefox, который пытается защитить вас от проблем безопасности при запуске Javascript. Когда я попытался ввести текст в свой пример в свою адресную строку, Firefox попросил меня спросить, не уверен ли я, что я хочу войти в api.del.icio.us.

Этот другой вопрос относительно HTTP auth похож на ваш вопрос, может быть, он вам поможет.


Update:

Я использовал Firebug в Net панель и ее консоль Javascript, и я был в состоянии видеть заголовки запроса/ответа.

Вот запрос от Javascript консоли, которая не удалась:

GET /v1/posts/add?url=http://www.spoons.com/&description=forks&tags=knives HTTP/1.1 
Host: api.del.icio.us 
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 
Accept-Language: en-us,en;q=0.5 
Accept-Encoding: gzip,deflate 
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 
Keep-Alive: 115 
Connection: keep-alive 
Referer: https://stackoverflow.com/questions/2708950/2740195 
Authorization: Basic XXXXXXXXXXXXXXXXX 
Cache-Control: max-age=0 

И вот запрос в адресной строке, работавшей:

GET /v1/posts/add?url=http://www.spoons.com/&description=forks&tags=knives HTTP/1.1 
Host: api.del.icio.us 
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 
Accept-Language: en-us,en;q=0.5 
Accept-Encoding: gzip,deflate 
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 
Keep-Alive: 115 
Connection: keep-alive 
Authorization: Basic XXXXXXXXXXXXXXXXX 
Cache-Control: max-age=0 

Единственное различие, кажется, заголовок Referer, который вызвал отказ . Значение network.http.sendRefererHeader в Firefox about.config может быть установлено в 0, которое отключает заголовок Referer. Когда я попробовал это, затем начал работать метод консоли Javascript.

Существует расширение Firefox под названием refspoof, которое полезно для отправки ваших собственных заголовков Referer, возможно, это может помочь здесь.

+0

Спасибо за ссылку. Я пробовал отслеживать через Firebug, но на самом деле ничего не мог с этим поделать, поскольку https ограничивает то, что вы можете видеть. Когда я сам вставляю вход url, я получаю подсказку, ОК, и это работает. Когда вы помещаете его в букмарклет, он действует differen ждение. – Steve

+0

Звучит многообещающе. Я попробую сегодня вечером. Если он работает в консоли, он должен работать для букмарклета. – Steve

+0

Спасибо! Это сработало. Не уверен, хочу ли я установить refspoof, так как я не возражаю отключить настройку реферера через about: config. Может быть, я могу сделать расширение, которое устанавливает его в 0, запускает скрипт и устанавливает его обратно на 2. Оффициально, кроме сайтов, не получающих кредит за то, что они являются реферирами, каковы последствия для непрерывного хранения ссылки на 0? Я также удивляюсь, почему Delicious/Yahoo сделала это так? – Steve

1

Похоже, вам не хватает url=.

+0

Спасибо. Я добавил его и все еще получаю ту же ошибку. – Steve

+0

Я попробовал ваш пример (с кодировкой URL) в Firefox 3.6, и он сработал.Вы вошли в Delicious с другим именем пользователя? Вы используете идентификатор Yahoo для входа в Delicious? –

+0

Это было? Потрясающие. Я использую FF 3.6.2, и я полностью вышел из FF и попробовал учетную запись, отличную от Yahoo и Yahoo. Все еще не сработает. Для учетной записи Yahoo я использовал zzz: pwd и zzz @ yahoo: pwd. Также отключил мой брандмауэр и не работал. Вы получили предупреждающее сообщение, в котором говорится: «Вы собираетесь заходить на сайт с помощью ..., но на веб-сайте не требуется аутентификация? – Steve

Смежные вопросы