服务器如何判断请求
❶ 请问服务器如何区分一个请求是AJAX发起的还是HTTP。
两者最本质的区别是:
AJAX通过xmlHttpRequest对象请求服务器,服务器接受请求后返回数据,实现无刷新交互
普通的http请求通过httpRequest对象请求,服务器接受请求后返回数据需要页面刷新
❷ 如何在服务器端判断请求的客户端是微信调用的浏览器
import java.net.*;
import java.io.*;
import java.util.*;
/**
* TCP协议下单向通信的客户端程序。
* @author new
*
*/
public class TCPClientA {
public static void main(String[] args) {
Socket s=null;
try {
s=new Socket("127.0.0.1",8888);
BufferedReader br=new BufferedReader(new InputStreamReader(s.getInputStream()));
String str=br.readLine();
System.out.println(str);
} catch (Exception e) {
e.printStackTrace();
}finally{
if(s!=null)try{s.close();}catch(IOException e){}
}
}
}
================================
import java.net.*;
import java.io.*;
import java.util.*;
/**
* TCP协议下单向通信的服务器端程序。
* @author new
*
*/
public class TCPServerA {
public static void main(String[] args) {
ServerSocket ss=null;
Socket s=null;
PrintStream ps=null;
try {
ss=new ServerSocket(8888);
while(true){
System.out.println("服务器已启动,在8888端口:");
s=ss.accept();
System.out.println("得到 "+s.getInetAddress()+" 的连接请求...");
ps=new PrintStream(s.getOutputStream());
ps.println(new Date());
ps.flush();
System.out.println("已向客户端发送数据!");
}
} catch (IOException e) {
e.printStackTrace();
}finally{
if(ps!=null)ps.close();
if(s!=null)try{s.close();}catch(IOException e){}
if(ss!=null)try{ss.close();}catch(IOException e){}
}
}
}
❸ 服务器,怎么判断一个http请求是来自浏览器
1、如服务器提供了web服务,则通过服务器本身的web平台查看会话记录;
2、通过本机的防火墙软件查当前会话情况(主要看协议);
3、netstat -an 查看分析;
4、抓包软件查看会话(例如wireshark).
以上各种方法都可以
❹ 服务器如何判别用户请求的设备为iOS还是Android设备还是windows...
通过 Agent 来判断相应的智能手机设备,然后跳转到新的手机站点
经过不懈的努力,终于搜集了比较全的 智能设备 的 Agent,然后又写了程序,直接上代码吧,希望能帮助到你
Js代码
/// 根据 Agent 判断是否是智能手机
///</summary>
///<returns></returns>
public static bool CheckAgent()
{
bool flag = false;
string agent = HttpContext.Current.Request.UserAgent;
string[] keywords = { "Android", "iPhone", "iPod", "iPad", "Windows Phone", "MQQBrowser" };
//排除 Windows 桌面系统
if (!agent.Contains("Windows NT") || (agent.Contains("Windows NT") && agent.Contains("compatible; MSIE 9.0;")))
{
//排除 苹果桌面系统
if (!agent.Contains("Windows NT") && !agent.Contains("Macintosh"))
{
foreach (string item in keywords)
{
if (agent.Contains(item))
{
flag = true;
break;
}
}
}
}
return flag;
}
❺ 浏览器中的preflight请求-预检请求
preflight,一个cors预检请求,属于options请求。该请求会在浏览器认为即将要执行的请求可能会对服务器造成不可预知的影响时,由浏览器 自动 发出。
利用预检请求,浏览器能够知道当前的服务器是否允许执行即将要进行的请求,只有获得了允许,浏览器才会真正执行接下来的请求。
所以,总结有几点:
preflight预检请求属于cors规范的一部分,是一种服务器验证机制。目前所有浏览器都实现了该规范,但是不免有些浏览器会对规范内容进行扩充。但是必须实现的规范是:只有以下条件 都 满足的情况下才不会发送预检请求,否则会在发送用户请求之前发送预检请求,以免在获得允许之前对服务器产生不可预知的影响。
条件有:
只能使用GET、POST方法
只能包含九种请求头:
只能包含三种类型:
该对象没有注册任何事件监听器
请求中不能使用ReadableStream对象
如果以上条件有一条不满足,浏览器则会自动发起预检请求
浏览器自动发送的预检请求,一般采用三个字段来表示:
服务器基于从预检请求获得的信息来判断,是否接受接下来的实际请求。
所以服务器同时需要配置preflight响应来回应浏览器,告知浏览器是否接受预检请求,主要涉及到三个字段:
举一个例子:
客户端自定义了一个请求头uname,内容是admin。但是此时服务器端并没有预检请求的处理(这里使用node作为服务器端)
客户端:
服务器(由于是不同域,所以实现处理了跨域请求):
结果:
可以看到在发送用户请求 http://127.0.0.1:8000/server 之前,浏览器先发送了一个预检请求,Type=preflight,而触发预检请求的原因是:客户端在请求头中添加了自定义请求头。但是由于服务器端没有预检请求的处理,所以浏览器没有得到预检请求的响应,就不会处理用户本身要发送的请求,因此可以看到/server这个请求出现了 CORS ERROR
按照之前所理解的预检请求,我们可以在服务器端进行配置对该请求的响应:
注意:由于preflight请求属于cors规范的一部分,因此当前仅当跨域的情况下可能会触发preflight。也即:只有跨域了,且不满足之前触发条件中一条就会触发预检请求。没有跨域,不会触发预检请求。
❻ 服务器如何判断post请求者身份
一般有两种方法,一种传统的用cookie
另一种是通过token的方式,就是你说的那种
referer的方式不可行,只要用户可以修改的数据都不可信,而token是用户登录后服务端下发的,原则上客户端不能自己生成,所以可以验证身份
❼ 服务器端如何判断是请求是通过手机还是PC发出的
看IP,手机上网的IP段都是固定的,所以说一般是通过IP的。而往往很多的手机上网IP都是一样的,不想电脑一样。
❽ 如何在服务器端判断请求的客户端是微信调用的浏览器
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/5.0 (iPhone; CPU iPhone OS 5_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Mobile/9B176 MicroMessenger/4.3.2
在Android下
Mozilla/5.0 (Linux; U; Android 2.3.6; zh-cn; GT-S5660 Build/GINGERBREAD) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 MicroMessenger/4.5.255
包含“MicroMessenger”可以判断为微信浏览器,顺便不仅可以看到是什么手机、微信版本还有其他更多的东西。
❾ http请求头大数据post如何判断完整
HTTP请求格式:
1、在HTTP请求中,第一行必须是一个请求行request,line,用来说明请求类型、要访问的资源以及使用的HTTP版本。
2、紧接着是一个首部header,小节,用来说明服务器要使用的附加信息。这样就能判断http请求头大数据post完不完整。
❿ 服务器端如何判断ajax请求方式
你指的请求方式是指GET、POST、HEAD、OPTIONS、PUT、DELETE、TRACE、CONNECT么?
那么分析http头就能看到了
get方式: