代码改变世界

发起自定义http请求

2013-04-06 10:46  放作夥  阅读(729)  评论(0编辑  收藏  举报

 对firefox的插件poster很感兴趣,想通过自己写的本地页面脚本实现,百度一下说得最多的是ajax,试了一下不行

 

原因如下:出于安全原因,浏览器对页面中的ajax请求(XMLHTTPRequest)有同源策略的限制。


如果两个页面的协议、域名和端口是完全相同的,那么它们就是同源的。当前加载页面只能发出同源的ajax请求。
 
这就跟我想的不一样了,因为poster这个插件是随便发的,怎么办呢,继续百度吧
 
 
幸运的是,居然搜到了一个很稀罕的js对象,WinHttp.WinHttpRequest.5.1,为什么说稀罕呢,因为关于这东西几乎没中文资料,只有msdn那有说明
这东西可以用来发包,而且可以加http头域,感觉不错,给个例子吧
 

var obj = new ActiveXObject("WinHttp.WinHttpRequest.5.1");
obj.Open("POST", url, false);
obj.Option(4) = 13056;
obj.Option(6) = false; //可以不自动跳转,截取服务端返回的302状态。
obj.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); //加头域
obj.setRequestHeader("Referer", "http://support.wechat.com");var param = "uin=abcd1234"; 

obj.Send(param); 

var result=obj.responseText;

 

这个对象其实还有很多属性和方法,例如取出响应包的头域(getrequestheader),但是由于只有英文的说明,感兴趣的自己去msdn查吧