手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆
浏览模式: 标准 | 列表全部文章

孟宪会之AJAX(XMLHttpRequest)进行跨域请求方法详解

跨域请求,顾名思义,就是一个站点中的资源去访问另外一个不同域名站点上的资源。这种情况很常见,比如说通过 style 标签加载外部样式表文件、通过 img 标签加载外部图片、通过 script 标签加载外部脚本文件、通过 Webfont 加载字体文件等等。默认情况下,脚本访问文档属性等数据采用的是同源策略(Same origin policy)。

那么,什么是同源策略呢?如果两个页面的协议、域名和端口是完全相同的,那么它们就是同源的。同源策略是为了防止从一个地址加载的文档或脚本访问或者设置 从另外一个地址加载的文档的属性。如果两个页面的主域名相同,则还可以通过设置 document.domain 属性将它们认为是同源的。

随着 Web2.0 和 SNS 的兴起,Web 应用对跨域访问的需求也越来越多,但是,在脚本中进行跨域请求是受安全性限制的,Web 开发人员迫切需要提供一种更安全、方便的跨域请求方式来融合(Mashup)自己的 Web 应用。这样做的一个好处就是可以将请求分摊到不同的服务器,减轻单个服务器压力以提高响应速度;另外一个好处是可以将不同的业务逻辑分布到不同的服务器上 以降低负载。

值得庆幸的是,跨域请求的标准已经出台,主流浏览器也已经实现了这一标准。W3C 工作组中的 Web Applications Working Group(Web 应用工作组)发布了一个 Cross-Origin Resource Sharing(跨域资源共享,该规范地址:http://www.w3.org/TR/access-control/和http: //dev.w3.org/2006/waf/access-control/) 推荐规范来解决跨域请求的问题。该规范提供了一种更安全的跨域数据交换方法。具体规范的介绍可以访问上面提供的网站地址。值得注意的是:该规范只能应用在 类似 XMLHttprequest 这样的 API 容器内。IE8、Firefox 3.5 及其以后的版本、Chrome浏览器、Safari 4 等已经实现了 Cross-Origin Resource Sharing 规范,已经可以进行跨域请求了。

Cross-Origin Resource Sharing 的工作方式是通过添加 HTTP 头的方法来判断哪些资源允许 Web 浏览器访问该域名下的信息。然而,对于那些 HTTP 请求导致用户数据产生副作用的请求方法(特别是对于除了GET、某些 MIME 类型的 POST 之外的 HTTP方法),该规范要求浏览器对请求进行“预先验”,通过发送 HTTP 的 OPTIONS 请求头询问服务器有哪些支持的方法,在征得服务器的同意后,再使用实际的 HTTP 请求方法发送实际的请求。服务器也可以通知客户端是否需要将验证信息(如 Cookie 和 HTTP Authentication 数据)随同请求一起发送。

请看详细。。。

» 阅读全文

合理使用google reader

google reader恐怕很多人都在用吧。当然在国内也有很多人使用有道的RSS订阅,鲜果的RSS订阅。
不过,我仍然是说的google reader,在我的博客里以前也介绍过。

今天我说的合理使用Google reader,是指另类的用法。
一些技术型 的博客,往往都是在国外,而正常的时候,我们好象都无法访问,怎么办?只能借着偶尔翻墙的时机,订阅那些博客的RSS源。如果你用的是国内的RSS订阅,那么也很有可能是无法订阅的。所以,GoogleReader就派用场了。
再深再远,他都能够帮你订阅回来,只是。。。无法回复而己

借着这个功能,我订阅了几个写mysql proxy的作者的博客。
当然更重要的是,我订阅了twitter上的两位:孙燕姿和萧亚轩。。

所以,懂的喽。。。什么非死不可啦,推特啦,博客班点啦。哈哈。。。都可以尝试订阅你所关注的对象,除了这个嘛。。。。你当然仍然不能回复 。除非你为google reader推插件。。。
如果你用firefox写个插件,或许也能够回复哦?

Tags: twitter, reader, facebook

Ways to debug your jQuery or JavaScript codes

Debugging your client code is rather a normal procedures for any web developers. Everyone will shout Firebug! yeah, me too. But Firebug is great for syntax detection but how about logic problem? In this article i will share with you some of the ways i used to debug my JavaScript or jQuery codes when I’m developing my web application. I will also share with you a trick that i used on my code to alert me that a bug occurs in a particular script since i don’t get many helpful users nowadays.

Alert Them Out

The most simple and basic way of debugging is by using JavaScript alert function. This is old but is quite useful sometimes. Especially when you do not want to remember other debugging methods. It’s pretty simple, alert the message you want to see. If the alert doesn’t appear, this means that the error is before the alert statement. I usually do this when I’m debugging IE although there are tools available for IE.

JavaScript代码
  1. alert("The Bug Is Somewhere Before ME!");  

 

Log them up

Well, if you are using WebKit browsers for your development (FireFox, Chrome, Safari) you may want to try this.

JavaScript代码
  1. if (window.console)  
  2.     window.console.log("The Bug is killing me");  

 

What this does is to log the string ‘The Bug is killing me’ into the console such as Firebug. It’s always better than using alert and see this infinity loop that keep popping out until you are force to shut down your browser!

Log them with jQuery

The above two methods work both in jQuery and JavaScript. But this only function well in jQuery. This is definitely not something i came up with but its from Dominic Mitchell

JavaScript代码
  1. jQuery.fn.log = function (msg) {  
  2.     console.log("%s: %o", msg, this);  
  3.     return this;  
  4. };  

 

 The above creates a function, ‘log’. This function will do exactly similar to the one above but the differences is that it format the string a little bit before displaying out to the console. This is good for debugging your long chaining with jQuery. Although the previous method also can be used to debug chaining but it will required an additional line instead of including it into the chaining process. So you can debug this way,

JavaScript代码
  1. $(root).find('li.source > input:checkbox').log("sources to uncheck").removeAttr("checked");  

Try and catch

In JavaScript, you can try to catch the error in a particular scope. This way, it won’t propagate to other section of the code.

JavaScript代码
  1. try  
  2. {  
  3.   //Run some code here  
  4. }  
  5. catch(err)  
  6. {  
  7.   //Handle errors here  
  8. }  

 

 This is pretty good when you are trying to debug one of the many function in your JavaScript.

Catch them all

The last one i am going to show you is to catch any one of the error into a particular function instead of using multiple try and catch.

JavaScript代码
  1. function handleError(e)  
  2. {  
  3.     alert(’An error has occurred!\n’+e);  
  4.     return true;  
  5. }  
  6. window.onerror = handleError;  

This will handle any error occurs in your JavaScript code to the function ‘handleError’. You will want to use this at the end of your script. Especially if you want to be informed whether a particular function or script has malfunction and the users are not reporting. Basically, what you can do is to gather all information and placed them into a String or JSON. Using ajax to delivery these information to your email or database. This way, your support team will have an idea which part are having problems and your system will be more reliable. (testing doesn’t means 100% bug free) The information that you may want to know are usually located at Navigator Object in JavaScript.

Summary

These are the methods i usually look at when debugging my own client script. It might not be everything but i hope it can be useful to some of you out there. Hope you learn something!

 

原文来自于:http://hungred.com/2009/08/04/useful-information/ways-debug-jquery-javascript-codes/

Author: Clay Lua

 

 

互联网时代,每天都是新闻,篱笆域名被封

互联网时间,每天都有一些新闻啊。
这不,前段时间it168,51,博客大巴刚刚关掉没多久,现在篱笆网也被关掉了。去新网查一下,输入域名:

大小: 24.88 K
尺寸: 386 x 290
浏览: 1343 次
点击打开新窗口浏览全图

然后会弹出:

大小: 24.69 K
尺寸: 498 x 257
浏览: 1382 次
点击打开新窗口浏览全图

汗死,居然是这种原因。看来举报人或者工信部之类的对于这类事情很痛恨啊。

不过。liba.cn还是可以访问的。。论坛嘛 ,又换了域名了。不知道下一个会是谁去举报。。。真有意思。还好我这里不允许用户输入【是评论都需要审核】

唉。还是审核好啊。天啊,人人自危?

 

万能验证码:recaptcha

说是万能,意思是他支持多种程序语言。而且调用方式也非常简单,当然官方也有例子
Recaptcha,这是一个验证码程序,其实真的很方便,如果你一天到晚还在为着验证码被别人破解而不停的改进自己的验证码时,你可以用它;如果你不会写验证码程序,你可以用它;如果你想支持语音验证,你也可以用它;如果你想有更多的功能,当然你一样可以用它。

使用方法比较简单,大致如下:

  1. Download the reCAPTCHA Library, unzip it, and copy recaptchalib.php to the directory where your forms live.先到reCAPTCHA下载PHP类库,解压拷到你的线上目录中
  2. If you haven't done so, sign up for an API key. 准备完后,你可以注册并申请一下API
  3. Now we're ready to start modifying your code. First, we'll add code to display the CAPTCHA:然后,我们开始修改代码。首先,我们先添加显示CAPTCHA验证码的代码 
    PHP代码
    1. require_once('recaptchalib.php');  
    2. $publickey = "..."// you got this from the signup page,这里就是你刚才申请的API KEY 
    3. echo recaptcha_get_html($publickey);  

   4.In the code that processes the form submission, you need to add code to validate the CAPTCHA. Otherwise, the CAPTCHA will appear, but the answers won't be checked. The validation code looks like:在提交处理页,你需要添加CAPTCHA验证代码。否则,CAPTCHA并不会验证他们。验证代码大致如下:

PHP代码
  1. require_once('recaptchalib.php');  
  2. $privatekey = "...";  //申请的API KEY
  3. $resp = recaptcha_check_answer ($privatekey,  
  4.                                 $_SERVER["REMOTE_ADDR"],  
  5.                                 $_POST["recaptcha_challenge_field"],  
  6.                                 $_POST["recaptcha_response_field"]);  
  7.   
  8. if (!$resp->is_valid) {  
  9.   die ("The reCAPTCHA wasn't entered correctly. Go back and try it again." .  
  10.        "(reCAPTCHA said: " . $resp->error . ")");  
  11. }  

看起来是不是很简单?现在是不是不再犹豫了??

更多参考和参数可以查看这里:http://recaptcha.net/plugins/php/

 

 

 

Tags: recaptcha