如何判断Http请求方式
/
判断是否POST方式请求
@return boolean
/
function isPost(){
if(isset($_SERVER['REQUEST_METHOD']) && $_SERVER['REQUEST_METHOD'] == 'POST'){
return true;
}else{
return false;
}
}
/
判断是否GET方式请求
@return boolean
/
function isGet(){
if( isset($_SERVER['REQUEST_METHOD']) && $_SERVER['REQUEST_METHOD'] == 'GET'){
return true;
}else{
return false;
}
}
/
是否AJAX请求
@return bool
/
function isAjax() {
if(isset($_SERVER['HTTP_X_REQUESTED_WITH']) ) {
if('xmlhttprequest' == strtolower($_SERVER['HTTP_X_REQUESTED_WITH'])){
return true;
}
}
if(!empty($_POST['ajax']) || !empty($_GET['ajax'])){
// 判断Ajax方式提交
return true;
}
return false;
}
ajax请求服务器的事件响应中,按如下方法判断响应已就绪:
1、在onreadystatechange事件中,当readyState等于4,且状态码为200时,表示响应已就绪。
2、Ajax不是一种新的编程语言,而是一种用于创建更好更快以及交互性更强的Web应用程序的技术。
如何判断代理服务器是否可用?
如何判断代理服务器是否可用?
代理服务器是一种在网络中转发用户请求的中间服务器。使用代理服务器可以隐藏用户的真实IP地址,提高网络访问速度等优点。但是,并不是所有的代理服务器都可用,有些代理服务器可能会导致网络连接缓慢、延迟或失败。因此,我们需要有效地判断代理服务器是否可用。
一、使用ping命令
ping命令是网络管理员经常使用的一个十分简单而实用的工具,它可以测试我们的电脑与另一个电脑之间是否可以通信。如果我们想要快速检测代理服务器是否可用,可以使用命令行中的ping命令。在命令行输入:ping代理服务器的IP地址或域名,然后观察行尾输出的数据包是否返回。如果返回的数据包延迟较小,且丢包率较低,则说明代理服务器可用。
二、使用Telnet命令
Telnet命令可以用于远程登录和操作目标主机,也可以用于测试代理服务器的连通性。使用Telnet命令测试代理服务器是否可用的方法如下:在命令行中输入telnet代理服务器的IP地址或域名端口号,回车即可。如果没有错误提示,并出现一行类似于“220SMTPServiceReady”等信息,则说明代理服务器可用。如果出现“无法连接到远程系统”,则说明代理服务器不可用。
三、使用Web代理检测工具
除了上述两种方法外,还可以使用各种网络工具进行代理服务器的检测。比如,使用Web代理检测工具。常见的Web代理检测工具有proxyjudgeus、letushidecom、proxyorg等,这些工具可以自动测试代理服务器是否可用,并提供一系列详细信息,例如代理服务器的类型、速度、连接时间等信息。
总之,判断代理服务器是否可用并不是一件困难的事情,通过实用命令行命令或者使用网络工具进行测试即可。有了一套高效的代理服务器检测方法,我们将能够更快速地确定代理服务器是否可用,提高网络访问效率。
1 get是从服务器上获取数据,post是向服务器传送数据。 2 get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。post是通过HTTP post机制,将表单内各个字段与其内容放置在HTML HEADER内一
php代码
public function is_weixin(){
if ( strpos($_SERVER['HTTP_USER_AGENT'], 'MicroMessenger') !== false ) {
return true;
}
return false;
}
if($this->is_weixin()){
}else{
echo "请使用微信访问本网址。";
}
在iPhone下
Mozilla/50 (iPhone; CPU iPhone OS 5_1 like Mac OS X) AppleWebKit/53446 (KHTML, like Gecko) Mobile/9B176 MicroMessenger/432
在Android下
Mozilla/50 (Linux; U; Android 236; zh-cn; GT-S5660 Build/GINGERBREAD) AppleWebKit/5331 (KHTML, like Gecko) Version/40 Mobile Safari/5331 MicroMessenger/45255
包含“MicroMessenger”可以判断为微信浏览器,顺便不仅可以看到是什么手机、微信版本还有其他更多的东西。
前面提到,服务器在完成请求之后会在 XMLHttpRequest 的 onreadystatechange 属性中查找要调用的方法。这是真的,但还不完整。事实上,每当 HTTP 就绪状态改变时它都会调用该方法。这意味着什么呢?首先必须理解 HTTP 就绪状态。
HTTP 就绪状态表示请求的状态或情形。它用于确定该请求是否已经开始、是否得到了响应或者请求/响应模型是否已经完成。它还可以帮助确定读取服务器提供的响应文本或数据是否安全。在 Ajax 应用程序中需要了解五种就绪状态:
• 0:请求没有发出(在调用 open() 之前)。
• 1:请求已经建立但还没有发出(调用 send() 之前)。
• 2:请求已经发出正在处理之中(这里通常可以从响应得到内容头部)。
• 3:请求已经处理,响应中通常有部分数据可用,但是服务器还没有完成响应。
• 4:响应已完成,可以访问服务器响应并使用它。
与大多数跨浏览器问题一样,这些就绪状态的使用也不尽一致。您也许期望任务就绪状态从 0 到 1、2、3 再到 4,但实际上很少是这种情况。一些浏览器从不报告 0 或 1 而直接从 2 开始,然后是 3 和 4。其他浏览器则报告所有的状态。还有一些则多次报告就绪状态 1。在上一节中看到,服务器多次调用 updatePage(),每次调用都会弹出警告框 —— 可能和预期的不同!
对于 Ajax 编程,需要直接处理的惟一状态就是就绪状态 4,它表示服务器响应已经完成,可以安全地使用响应数据了。基于此,回调方法中的第一行应该如 清单 13 所示。
清单 13 检查就绪状态
function updatePage() {
if (requestreadyState == 4)
alert("Server is done!");
}
修改后就可以保证服务器的处理已经完成。尝试运行新版本的 Ajax 代码,现在就会看到与预期的一样,只显示一次警告信息了。
HTTP 状态码
虽然 清单 13 中的代码看起来似乎不错,但是还有一个问题 —— 如果服务器响应请求并完成了处理但是报告了一个错误怎么办?要知道,服务器端代码应该明白它是由 Ajax、JSP、普通 HTML 表单或其他类型的代码调用的,但只能使用传统的 Web 专用方法报告信息。而在 Web 世界中,HTTP 代码可以处理请求中可能发生的各种问题。
比方说,您肯定遇到过输入了错误的 URL 请求而得到 404 错误码的情形,它表示该页面不存在。这仅仅是 HTTP 请求能够收到的众多错误码中的一种(完整的状态码列表请参阅 参考资料 中的链接)。表示所访问数据受到保护或者禁止访问的 403 和 401 也很常见。无论哪种情况,这些错误码都是从完成的响应 得到的。换句话说,服务器履行了请求(即 HTTP 就绪状态是 4)但是没有返回客户机预期的数据。
因此除了就绪状态外,还需要检查 HTTP 状态。我们期望的状态码是 200,它表示一切顺利。如果就绪状态是 4 而且状态码是 200,就可以处理服务器的数据了,而且这些数据应该就是要求的数据(而不是错误或者其他有问题的信息)。因此还要在回调方法中增加状态检查,如 清单 14 所示。
清单 14 检查 HTTP 状态码
function updatePage() {
if (requestreadyState == 4)
if (requeststatus == 200)
alert("Server is done!");
}
首先,考虑第一个问题
什么样的javascript脚本会向服务器产生请求?
1 现有HTML中元素的属性改变引起的服务器请求 如IMG的src、IFrame的src、link元素的href、 script元素的src等
2 现有HTML创建了新元素,跟1类似
3 form提交
4 ajax请求
5 window方法,如refresh以及location的改变等
无论采用何种方法,都需要一个前提,那就是服务器的服务地址,所以判断那些会产生请求,很简单啊,看看是否请求了服务器服务的地址啊
对Session和Cookie的区分与理解 先说session 对SESSION的争论好象一直没有停止过,不过幺麽能理解SESSION的人应该占90以上。但还是讲讲,别嫌老~ 有一些人赞成用SESSION,有一些人不赞成。但这个问题到底要怎么说。不妨听听我的看法,如果有错误请不要朝丢东西,金条和硬币除外。 有些人应该知道我是做江湖程序的,而江湖程序做看中的就是效率,但这里不谈设计,而从一些比较实际的角度看SESSION。 首先要先说SESSION是干什么的,SESSION是可以存储针对与某一个用户的IE以及通过其当前窗口打开的任何窗口具有针对性的用户信息存储机制。为什么要这样说。看下边先研究SESSION是如何启动的,当打开IE以后浏览网站后会发出一个指令请求SESSIONID以及对各个类型数据的下载许可,如,声音以及FLASH。 数据实际传输内容:IE到服务器 GET / HTTP/11 Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, / Accept-Language0: zh-cn Accept-Encoding: gzip, deflate User-Agent: Mozilla/40 (compatible; MSIE 501; Windows NT 50) Host: Connection: Keep-Alive 服务器会返回一个没有被使用的SESSIONID让IE使用,当时IE就对返回SESSIONID做存储 并同时返回相关页面的下载数据,如下:服务器到IE HTTP/11 200 OK Server: Microsoft-IIS/50 Date: Sun, 30 Nov 2003 16:41:51 GMT Content-Length: 21174Content-Type: text/html Set-Cookie: ASPSESSIONIDCACBBBRT=IBOMFONAOJFEEBHBPIENJFFC; path=/ Cache-control: private 然后就是页面HTML代码此时这个IE程序(不是客户机)的SESSIONID就为IBOMFONAOJFEEBHBPIENJFFC而当IE在访问任何这个站点的ASP程序的时候,就会把IBOMFONAOJFEEBHBPIENJFFC发送给服务器,服务器就会知道IBOMFONAOJFEEBHBPIENJFFC是表示你而在服务器上设置SESSION("name")="name"完全可以看成是SESSION("IBOMFONAOJFEEBHBPIENJFFC")("name")="name" 或者 SESSION(SESSIONID)("name")="name" 这样,SESSION就区分开用户了。 而当服务器反馈这个ID的时候会看这个ID有没有被使用。如果有在换一个 反正不会让你重复,如果想模拟某人的SESSION的ID来进行欺骗是可以的。不过要获取到对方IE传输信号,并且在保证当时这个SESSIONID没有被取消的情况下才可能实施。 不过要是我有那时间直接通过POST信号找他NAME和PASS了。我可不费这个劲,想必一些人明白了了SESSIONID到底是如何工作的,那么就在看看COOKIE,有人说SESSIONID就是COOKIE,按照技术上来讲他们不属于同类,但是属于一种工作模式,用户和服务器传输私有数据当我设置COOKIE的时候,服务器会反馈给IE一个指令。IE通过这个网络指令生成COOKIE并存放,在特定的时候会取得这个这个信息如在访问这个站点并且COOKID有效的时候。 那么为什么要用COOKIE而不用SESSION呢 看下区别 有效时间以及存储方式 传输内容 COOKIE 可设置并在本地保留 明码信息 SESSION 在IE不关闭并服务器不超时 只有SESSIONID 当如果想让用户下次登入网站不需要输入用户名或者密码的时候就只能用COOKIE, 因为他可以保留相当长的时间(在COOKIE记录被删除或者失效日期之前) 而SESSION就不可以,他不会保留太长时间,而且IE在关闭后就自动清除了SESSIONID记录 在下次登入的时候会请求新的SESSIONID 而服务器想通过用户个人变量校验用户的状态的时候,就不能用COOKIE 如果用设置用户权限是USER。而IE访问的时候就把USER的明码传输到服务器。 那么如果我通过一定手段,比如直接修改COOKIE记录,把USER修改成ADMIN呢~~ 就麻烦了。 但存储用户名和密码或者网站的配色方案这样的信息,用COOKIE是最好的 好,有点累了,在说说这个东西 RequestServerVariables("HTTP_REFERER") 我想有一些人通过这个RequestServerVariables("HTTP_REFERER") 来进行一些关键性限制,特别是对付远程提交以及非法侵入。 那么我就要提醒下服务器取得的HTTP_REFERER信息完全是IE传输给服务器的,可以模拟 而且难度不大,用不到半个小时就可以用VB做出一个针对HTTP_REFERER入侵程序。 (可惜我原先那他没干正经事情,做WEB游戏挂机程序来的) 附一个不错的回贴: ------------------------------------------------------------------------------------------------------ COOKIE 是本地文件,是40大盗在阿里巴巴家做的记号, 或者是送牛奶的人在你家门口钉的箱子。 SESSION 是服务器端内存,是你洗澡时浴池发给你的钥匙。 自己专用,可以开自己的好多箱子。 APPLICATION 是公共浴池。 在这里能看见所有人,包括ppmm哦:)。
0条评论