2010-04-25 17 views
4

Je veux créer un bookmarklet Delicious dans Firefox qui marque la page actuelle avec un tag prédéfini.Créer un signet délicieux dans Firefox en utilisant l'API Delicious

Pour preuve de concept, si je saisis cette URL, cela fonctionne:

https://john:[email protected]/v1/posts/add?url=http://www.google.com& 
    description=http://www.google.com&tags=testtag 

Mais comme bookmarklet ne est pas, je reçois vu refuser l'accès:

javascript:(

    function() 
    { 
     location.href = 'https://john:[email protected]/v1/posts/add?url=' 
      + encodeURIComponent(window.location.href) 
      + '&description=' + encodeURIComponent(document.title) 
      + '&tags=testtag'; 
    } 

)() 

Est-ce possible via un signet javascript?

Mise à jour: J'ai essayé, mais encore obtenu l'accès refusé erreur, il a quelque chose à voir avec Javascript/Firefox.

javascript:(

    function() 
    { 
     location.href = 'https://john:[email protected]/v1/posts/add?url=' 
      + 'http://www.google.com' 
      + '&description=' + 'http://www.google.com' + '&tags=testtag'; 
    } 

)() 

Mise à jour 2: Après avoir essayé de nombreuses variantes de ce qui précède et sur les différents navigateurs, je ne peux toujours pas passer le message de refus d'accès , offrant donc une prime.

Répondre

2

Je suppose que c'est Firefox qui essaie de vous protéger des problèmes de sécurité lors de l'exécution de Javascript. Quand j'ai essayé de taper votre exemple dans ma barre d'adresse, Firefox m'a demandé si je suis sûr de vouloir me connecter au api.del.icio.us.

Cette autre question concernant HTTP auth ressemble à votre question, peut-être que cela vous aidera.


Mise à jour:

je net panneau de Firebug et sa console Javascript, et j'ai pu voir les en-têtes de demande/réponse.

Voici la demande de la console Javascript qui ECHEC:

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 

Et, voici la demande de la barre d'adresse, ce qui a marché:

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 

La seule différence semble être l'en-tête Referer, qui a causé l'accès refusé la réponse. Le paramètre network.http.sendRefererHeader dans Firefox about.config peut être défini sur 0, ce qui désactive l'en-tête Referer. Lorsque j'ai essayé, la méthode de la console Javascript a commencé à fonctionner.

Il existe une extension Firefox appelée refspoof qui est utile pour envoyer vos propres en-têtes personnalisés Referer, peut-être que cela peut aider ici.

+0

Merci pour le lien J'ai essayé de tracer via Firebug, mais je n'ai vraiment pu obtenir quoi que ce soit car https limite ce que vous pouvez voir Quand je mets directement l'entrée, je reçois l'invite, cliquez sur OK et ça marche Quand vous le mettez dans un bookmarklet, il agit différen tly. – Steve

+0

Cela semble prometteur. Je vais essayer ce soir. Si cela fonctionne dans la console, cela devrait fonctionner pour un bookmarklet. – Steve

+0

Merci! Ça a marché. Je ne sais pas si je veux installer refspoof, car cela ne me dérange pas de désactiver le paramètre de referrer via about: config pour le moment. Peut-être que je peux faire une extension qui le met à 0, exécute un script et le redéfinit à 2. Offhand, autre que les sites ne recevant pas de crédit pour être un référant, quelles sont les conséquences pour maintenir le référent à 0 de façon permanente? Je me demande aussi pourquoi Delicious/Yahoo l'a fait de cette façon? – Steve

1

Il semble qu'il vous manque url=.

+0

Merci. Je l'ai ajouté et je reçois toujours la même erreur. – Steve

+0

J'ai essayé votre exemple (avec l'URL encodée) dans Firefox 3.6 et cela a fonctionné.Êtes-vous connecté à Delicious avec un autre nom d'utilisateur? Utilisez-vous un identifiant Yahoo pour vous connecter à Delicious? –

+0

C'est fait? Impressionnant. J'utilise FF 3.6.2 et j'ai complètement quitté FF et essayé un compte non-Yahoo et Yahoo. Ça ne marchera toujours pas. Pour le compte Yahoo, j'ai utilisé zzz: pwd et zzz @ yahoo: pwd. Éteint également mon pare-feu et ne fonctionnait pas. Avez-vous reçu un message d'avertissement disant "Vous êtes sur le point de vous connecter au site avec ... mais le site ne nécessite pas d'authentification?" – Steve