Создайте 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
Заголовки, может быть, это может помочь здесь.