服务端强行要求弹出客户端登录窗口自动登录方法
2012-06-21 16:58
218 查看
想做点东西练练javascript,于是打算为饭否AIR客户端爱饭加上额外的功能,例如上传图片等,先尝试了使用javascript验证和发送饭否消息,仅这个就花了不少时间,很多时间花在了去除低级错误上,例如jquery ajax的type:”post”被我写成了method:”post”,花了很多时间才找出来。
先放上主要代码,使用jquery框架以及jquer.base64插件:
有两个主要问题:
1.验证用户
饭否API验证方式为
HTTP Basic 验证,需要对“用户名:密码”进行base64编码,添加进ajax请求的http头信息。
XMLHttpRequest.setRequestHeader(‘Authorization’, ‘Basic ‘ + $.base64.encode(name + ‘:’ + pass));
使用饭否需要验证的API(例如读取私信、发送消息)时,都要在请求前加上这一条HTTP头信息。
爱饭使用YUI框架,可以通过YAHOO.util.Connect.initHeader设置每次ajax请求的默认HTTP头信息,
initHeader(‘Authorization’, ‘Basic ‘ + Base64.encode(name + ‘:’ + pass), true);
最后一个参数”true”代表设为默认http头信息。
设置之后每次使用YAHOO.util.Connect.asyncRequest进行ajax请求都不需要再添加验证。
以上那段代码请求的域为api.fanfou.com,如果放在网上,除非放在饭否服务器,有相同的域,否则无法运行。
对本地网页,在跨域上,不同浏览器有不同规则,IE允许跨域访问,firefox与chorme都不行。以上代码放在本地,用IE打开,就可以运行,用firefox打开,会出现Access to restricted URI denied” code: “1012。
使用IE可以通过设置可信任站点实现跨域获取内容,其他跨域方法网上很多,还未细究,但都是要在客户端设定或者两站互相配合。
所以,使用javascript发送饭否消息只适合运用在AIR程序上,AIR有自己特定的安全沙箱,允许跨域请求。
另,饭否与Twitter的API几乎一样,可直接套用。
P.S 早上起来,发现已经有人对爱饭扩展,做了查看上传的图片的功能,他还在做上传图片的功能,我也没必要再做这部分功能了。开源的好处之一,就是有很多人帮忙完善这个程序啊~
先放上主要代码,使用jquery框架以及jquer.base64插件:
有两个主要问题:
var name = "yourname"; var pass = "yourpassword"; $.ajax({ url: "http://api.fanfou.com/statuses/update.xml", type:"POST", data: "status=信息内容", beforeSend: function(xhr){ xhr.setRequestHeader('Authorization', 'Basic ' + $.base64.encode(name + ':' + pass)); }, success: function(data, textStatus){ alert(data); } });
1.验证用户
饭否API验证方式为
HTTP Basic 验证,需要对“用户名:密码”进行base64编码,添加进ajax请求的http头信息。
XMLHttpRequest.setRequestHeader(‘Authorization’, ‘Basic ‘ + $.base64.encode(name + ‘:’ + pass));
使用饭否需要验证的API(例如读取私信、发送消息)时,都要在请求前加上这一条HTTP头信息。
爱饭使用YUI框架,可以通过YAHOO.util.Connect.initHeader设置每次ajax请求的默认HTTP头信息,
initHeader(‘Authorization’, ‘Basic ‘ + Base64.encode(name + ‘:’ + pass), true);
最后一个参数”true”代表设为默认http头信息。
设置之后每次使用YAHOO.util.Connect.asyncRequest进行ajax请求都不需要再添加验证。
2.跨域问题
使用ajax请求资源总有跨域问题,即请求只能发生在相同的域内。以上那段代码请求的域为api.fanfou.com,如果放在网上,除非放在饭否服务器,有相同的域,否则无法运行。
对本地网页,在跨域上,不同浏览器有不同规则,IE允许跨域访问,firefox与chorme都不行。以上代码放在本地,用IE打开,就可以运行,用firefox打开,会出现Access to restricted URI denied” code: “1012。
使用IE可以通过设置可信任站点实现跨域获取内容,其他跨域方法网上很多,还未细究,但都是要在客户端设定或者两站互相配合。
所以,使用javascript发送饭否消息只适合运用在AIR程序上,AIR有自己特定的安全沙箱,允许跨域请求。
另,饭否与Twitter的API几乎一样,可直接套用。
P.S 早上起来,发现已经有人对爱饭扩展,做了查看上传的图片的功能,他还在做上传图片的功能,我也没必要再做这部分功能了。开源的好处之一,就是有很多人帮忙完善这个程序啊~
相关文章推荐
- 服务器是怎么要求客户端强行弹出身份验证窗口的
- 服务器是怎么要求客户端强行弹出身份验证窗口的
- Source Insight自动补全窗口弹出过慢的解决方法
- 框架<frame>登录超时自动统一页面弹出解决方法
- JavaScript实现自动弹出窗口并自动关闭窗口的方法
- 在包资源管理器中,在你要修改的类上点右键-重构-重命名 在弹出的窗口中输入新的名称,确定后eclipse会自动把该类内部的构造方法改名,会把工程中调用到该类的那些类自动修改正确。
- 来自客户端名 a 的远程会话超出了所允许的失败登录最大次数。强行终止了会话。”原因及解决方法
- JavaScript实现自动弹出窗口并自动关闭窗口的方法
- AD认证模式下如何通过表单登录来代替WINDOWS弹出窗口的方法
- 电脑的CMCC-EDU浏览器不能自动弹出登录框的解决方法
- 关于Linux服务端被登录时,客户端登录窗口的警示信息
- SVN客户端(TortoiseSVN)保存密码自动登录后,如何切换使用其它帐户登录方法
- “来自客户端名 a 的远程会话超出了所允许的失败登录最大次数。强行终止了会话。”原因及解决方法
- Linux SSH 客户端保存密码 自动登录服务端
- SVN客户端(TortoiseSVN)保存密码自动登录后,如何切换使用其它帐户登录方法
- 禁用飞信登录弹出自动升级的方法
- 在asp.net在服务端向客户端添加脚本实现自动弹出消息
- android 集合SSH服务端实现登录并保持session使客户端在登陆后能够获取服务端数据
- Android的Service中弹出窗口解决方法
- js弹出窗口总结6种弹窗方法