Erstellen Sie ein Köstliches Bookmarklet in Firefox Köstliche API
-
01-10-2019 - |
Frage
Ich möchte ein Köstliches Bookmarklet in Firefox erstellen, dass Lesezeichen die aktuelle Seite mit einem vorgegebenen Tag.
Für Proof of Concept, wenn ich diese URL eingeben, funktioniert es:
https://john:pwd@api.del.icio.us/v1/posts/add?url=http://www.google.com&
description=http://www.google.com&tags=testtag
Aber dies als Bookmarklet nicht, ich Zugriff verweigert :
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';
}
)()
Ist das möglich über ein Javascript-Lesezeichen?
Update:. Ich habe versucht, aber immer noch die Zugriff verweigert Fehler, so dass es etwas mit Javascript / Firefox zu tun
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';
}
)()
Update 2: viele Variationen der oben genannten und auf verschiedenen Browsern, nachdem er versucht, ich kann immer noch nicht vorbei an den Zugriff verweigert Nachricht , so eine Prämie anbietet.
Lösung
Ich vermute, das Firefox versucht, Sie von Sicherheitsproblemen zu schützen, wenn Javascript ausgeführt wird. Wenn ich Typisierung in Ihrem Beispiel in meiner Adressleiste versucht, aufgefordert, Firefox, mich zu fragen, ob ich bin sicher, dass ich in zu api.del.icio.us
anmelden möchten.
Diese andere Frage HTTP Auth schaut auf Ihre Frage ähnlich , vielleicht wird es Ihnen helfen.
Update:
Ich habe Firebug Net Panel und seine Javascript-Konsole, und ich war in der Lage, die Anfrage / Antwort-Header zu sehen.
Hier ist die Anforderung von der Javascript-Konsole, die FAILED:
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
Und hier ist die Anforderung von der Adressleiste, die ARBEITETE:
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
Der einzige Unterschied scheint der Referer
Header zu sein, was verursacht die Zugriff verweigert Antwort. Die Einstellung network.http.sendRefererHeader in Firefox about.config kann auf 0, die abwechselnd von dem Referer
Header gesetzt werden. Als ich das versucht, dann begann die Javascript-Konsole Methode arbeiten.
Es ist eine Firefox-Erweiterung namens refspoof , die für das Senden Ihrer eigenen benutzerdefinierten Referer
Header nützlich ist dass, vielleicht hier helfen.
Andere Tipps
Sieht aus wie Sie fehlt url=
.