我想在Firefox中创建一个Delicious书签,用预定义的标签为当前页面添加书签。
为了概念验证,如果我输入此网址,则可以:
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: 在尝试了上述和不同浏览器的许多变体后,我仍然无法通过访问被拒绝消息,因此提供赏金。
答案 0 :(得分:2)
我怀疑这是Firefox在运行Javascript时试图保护您免受安全问题的影响。当我尝试在你的地址栏中输入你的例子时,Firefox提示我询问我是否确定要登录api.del.icio.us
。
关于HTTP auth的另一个问题看起来与您的问题类似,也许会对您有所帮助。
<强>更新强>
我使用了Firebug的 Net 面板及其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://stackoverflow.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
标头,导致访问被拒绝响应。 Firefox的 about.config 中的 network.http.sendRefererHeader 设置可以设置为0,关闭Referer
标头。当我尝试这个时,Javascript控制台方法开始工作。
有一个名为refspoof的Firefox扩展程序,可用于发送您自己的自定义Referer
标题,这可能对此有所帮助。
答案 1 :(得分:1)
看起来你错过了url=
。