伺服器如何判斷請求
❶ 請問伺服器如何區分一個請求是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方式: