Создайте Delicious Bookmarklet в Firefox, используя Delicious API - PullRequest
4 голосов
/ 25 апреля 2010

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

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

https://john:pwd@api.del.icio.us/v1/posts/add?url=http://www.google.com&
    description=http://www.google.com&tags=testtag

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

javascript:(

    function()
    {
        location.href = 'https://john:pwd@api.del.icio.us/v1/posts/add?url=' 
            + encodeURIComponent(window.location.href)
            + '&description=' + encodeURIComponent(document.title)   
            + '&tags=testtag';
    }

)()

Возможно ли это через закладку javascript?

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

javascript:(

    function()
    {
        location.href = 'https://john:pwd@api.del.icio.us/v1/posts/add?url='
            + 'http://www.google.com'
            + '&description=' + 'http://www.google.com' + '&tags=testtag';
    }

)()

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

Ответы [ 2 ]

2 голосов
/ 29 апреля 2010

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

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


Обновление:

Я использовал панель 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: /1487005/sozdaite-delicious-bookmarklet-v-firefox-ispolzuya-delicious-api
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, который вызвал ответ denied . Параметр network.http.sendRefererHeader в Firefox about.config может быть установлен в 0, что отключает заголовок Referer. Когда я попробовал это, то консольный метод Javascript начал работать.

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

1 голос
/ 25 апреля 2010

Похоже, вы пропали без вести url=.

...