Создайте Delicious Bookmarklet в Firefox, используя Delicious API

Я хочу создать восхитительный букмарклет в 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 ответа

Решение

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

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


Обновить:

Я использовал сетевую панель Firebug и консоль 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://stackru.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 в about.config в Firefox может быть установлен в 0, что отключает Referer заголовок. Когда я попробовал это, то консольный метод Javascript начал работать.

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

Похоже, ты пропал url=,

Другие вопросы по тегам