Creare un Delicious Bookmarklet in Firefox con Delicious API
-
01-10-2019 - |
Domanda
Voglio creare un bookmarklet Delicious in Firefox che i segnalibri la pagina corrente con un tag predefiniti.
Per la prova di concetto, se entro questo URL, funziona:
https://john:pwd@api.del.icio.us/v1/posts/add?url=http://www.google.com&
description=http://www.google.com&tags=testtag
Ma questo come un bookmarklet non, ottengo accesso negato :
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';
}
)()
Questo è possibile tramite un javascript segnalibro?
Aggiornamento:. Ho provato a farlo, ma ancora ottenuto il accesso negato errore, in modo che abbia qualcosa a che fare con 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';
}
)()
Aggiornamento 2: Dopo aver provato molte varianti di cui sopra e su diversi browser, non riesco ancora ad andare oltre il messaggio di accesso negato , in modo da offrire una taglia.
Soluzione
ho il sospetto questo è Firefox cercando di proteggere l'utente da problemi di sicurezza durante l'esecuzione di Javascript. Quando ho provato a digitare nel vostro esempio nella mia barra degli indirizzi, Firefox mi ha spinto a chiedere se sono sicuro che voglio il login per api.del.icio.us
.
Questa altra questione relativa HTTP auth è simile alla tua domanda , forse vi aiuterà.
Aggiornamento:
ho usato di Firebug Net pannello e la sua console Javascript, e sono stato in grado di vedere le intestazioni di richiesta / risposta.
Questa è la richiesta da parte del console Javascript, che non è riuscito:
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
E, qui è la richiesta da parte della barra degli indirizzi, che ha funzionato:
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
L'unica differenza sembra essere l'intestazione Referer
, che ha causato il accesso negato risposta. L'impostazione di network.http.sendRefererHeader in di Firefox about.config può essere impostato a 0 che disattiva l'intestazione Referer
. Quando ho provato a farlo, allora il metodo console Javascript iniziato a lavorare.
V'è un'estensione per Firefox chiamato refspoof che è utile per l'invio di propri intestazioni Referer
personalizzati , forse questo può aiutare qui.
Altri suggerimenti
Sembra che tu sia mancante url=
.