1. 程式人生 > >伺服器端判斷request是Ajax請求(非同步)還是傳統請求(同步)

伺服器端判斷request是Ajax請求(非同步)還是傳統請求(同步)

在一次做非常複雜的ajax應用時,如果一個會話已經超時,但是此時再通過ajax請求,那麼ajax返回的則是一個登陸頁面的html,那這下就慘了,頁面上而已就亂了,那麼,能否在java端,如攔截器裡判斷客戶的的請求是否是ajax請求呢,經過查詢,能. 
   普通請求與ajax請求的報文頭不一樣,通過如下 

Java程式碼  收藏程式碼
  1. String requestType = request.getHeader("X-Requested-With");  

如果requestType能拿到值,並且值為XMLHttpRequest,表示客戶端的請求為非同步請求,那自然是ajax請求了,反之如果為null,則是普通的請求 

在伺服器端判斷request來自Ajax請求(非同步)還是傳統請求(同步):

  兩種請求在請求的Header不同,Ajax 非同步請求比傳統的同步請求多了一個頭引數

  1、傳統同步請求引數

    accept  text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    accept-charset  gb2312,utf-8;q=0.7,*;q=0.7
    accept-encoding  gzip,deflate
    accept-language  zh-cn,zh;q=0.5
    cache-control  max-age=0
    connection  keep-alive
    cookie  JSESSIONID=1A3BED3F593EA9747C9FDA16D309AF6B
    host  192.168.101.72:8080
    keep-alive  300
    referer  

http://192.168.101.72:8080/htfsweb/spring_security_login
    user-agent  Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.0.15) Gecko/2009101601 Firefox/3.0.15 (.NET CLR 3.5.30729)

  2、Ajax 非同步請求方式

    accept  */*
    accept-language  zh-cn
    referer  http://192.168.101.72:8080/scm/?token=3b194bff23bf6acecea5661ac8e14c51


    x-requested-with  XMLHttpRequest
    content-type  application/x-www-form-urlencoded,text/javascript
    accept-encoding  gzip, deflate
    user-agent  Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; QQDownload 598; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; CIBA; .NET CLR 1.1.4322; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; InfoPath.1)
    host  192.168.101.72:8080
    content-length  233
    connection  Keep-Alive
    cache-control  no-cache
    cookie  CSS=undefined; JSESSIONID=1B9AC25036290F7FB6823CCE1A24E541

  可以看到 Ajax 請求多了個 x-requested-with ,可以利用它,request.getHeader("x-requested-with"); 為 null,則為傳統同步請求,為 XMLHttpRequest,則為 Ajax 非同步請求。

相關推薦

伺服器判斷request來自Ajax請求 非同步 還是傳統請求 同步

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

伺服器判斷request是Ajax請求(非同步)還是傳統請求(同步)

在一次做非常複雜的ajax應用時,如果一個會話已經超時,但是此時再通過ajax請求,那麼ajax返回的則是一個登陸頁面的html,那這下就慘了,頁面上而已就亂了,那麼,能否在java端,如攔截器裡判斷客戶的的請求是否是ajax請求呢,經過查詢,能.    普通請求與ajax

java伺服器判斷頁面請求是否為ajax請求

話不多說,直接上程式碼 /** * 檢查是否Ajax請求 * @param request * @return */ private boolean isAjaxRequest(ServletRequest request

前端、伺服器和資料庫結構關係?HTTP請求中如何判斷瀏覽器型別?HTTP響應的狀態碼資訊

一、前端、伺服器端和資料庫端結構關係?二、向伺服器傳送一個請求,通過HTTP請求來判斷瀏覽器型別:        (這裡需要安裝一個外掛httpwatch,這個外掛的主要作用是觀察客戶端向伺服器傳送的Http請求,    而伺服器返回給客戶端的資訊。)  具體是通過響應的Us

Django-伺服器物件-跨域請求

Django-伺服器端物件-跨域請求 在介面函式中配置 from django.http import HttpResponse,response,JsonResponse def login(request): todo_list = [ {"

伺服器判斷客戶socket斷開連線的方法

1, 如果服務端的Socket比客戶端的Socket先關閉,會導致客戶端出現TIME_WAIT狀態,佔用系統資源。 所以,必須等客戶端先關閉Socket後,伺服器端再關閉Socket才能避免TIME_WAIT狀態的出現。 2, 在linux下寫socket的程式的時候,如果嘗

非同步請求網路----PullToRefresh上下拉重新整理資料---判斷是否有網--有網請求網路展示資料並新增資料庫----無網展示已新增資料庫的資料

第一步 寫依賴 implementation ‘com.nostra13.universalimageloader:universal-image-loader:1.9.5’ implementation ‘com.github.userswlwork:pull-to-refresh:1.0

java伺服器配置支援跨域請求

前言:之前做好的登陸介面,剛剛拿去給前端呼叫。發現前端那邊報錯,無法調到介面。因為我們後端的介面是在一臺伺服器上,前端(使用的是nodejs)的程式碼在另一臺伺服器上,導致兩臺伺服器之間無法相互呼叫(伺服器我們使用的是tomcat 7)。所以為了解決這個問題,前端那邊在介面

【陌上軒客】技術領域:涉獵Java、Go、Python、Groovy 等語言,高效能、高併發、高可用、非同步與訊息中介軟體、快取與資料庫、分散式與微服務、容器和自動化等領域; 興趣愛好:籃球,騎行,讀書,發呆; 職業規劃:勵志成為一名出色的伺服器端系統架構師。

陌上軒客 技術領域:涉獵Java、Go、Python、Groovy 等語言,高效能、高併發、高可用、非同步與訊息中介軟體、快取與資料庫、分散式與微服務、容器和自動化等領域; 興趣愛好:籃球,騎行,讀書,發呆; 職業...

jQuery jsonp跨域請求 ajax跨域之---伺服器代理實現

  ajax跨域之---伺服器端代理實現 https://www.cnblogs.com/lydialee/p/4869145.html   來源   https://www.cnblogs.com/chiangchou/p/jsonp.html

使用HttpClient4實現檔案上傳請求的傳送,伺服器以MultipartFile形式接收(附依賴jar包地址)

今天學習使用了HttpClient4.2向服務端傳送上傳檔案的post請求,由於伺服器端採用MultipartFile形式接收,查詢資料後決定使用HttpClient4.2實現,以下是實現程式碼(僅作測試使用): public void testtask

通過ALPN協議來判斷伺服器是否支援http2協議

由於當前主流瀏覽器,都只支援基於 HTTPS 部署的 HTTP/2,因為瀏覽器是基於ALPN協議來判斷伺服器是否支援HTTP2協議。瀏覽器在進行SSL連線,第一次傳送ClientHello包時,用過SS

伺服器接受多個請求時的高併發處理

同步服務為每個請求建立單一執行緒,由此執行緒完成整個請求的處理:接收訊息,處理訊息,返回資料;這種情況下伺服器資源對所有入棧請求開放,伺服器資源被所有入棧請求競爭使用,如果入棧請求過多就會導致伺服器資源耗盡宕機,或者導致競爭加劇,資源排程頻繁,伺服器資源利用效率降低。 非同步服務則可以分別設定兩個執行緒佇列

前端向後臺伺服器傳送請求並且傳送資料的方式

1:最簡單的標籤 <a href="xxx.xxx?username='liufukin'">請求伺服器</a> 2:用的最多的表單 <form action="xxx.xxx" method="post/get"&g

通俗易懂客戶伺服器互動原理(HTTP資料請求與HTTP響應,包括Servlet部分)

經常看到HTTP客戶端與伺服器端互動原理的各種版本的文章,但是專業術語太多,且流程過於複雜,不容易消化。於是就按照在 Servlet 裡面的內容大致做了一些穿插。本來 連 Tomcat 容器 和 Servlet 的生命週期也準備在這裡一起寫的,但怕過去龐大,於是就簡單的 引用

客服方式get請求(帶中文),伺服器接收解析是出現亂碼

中文亂碼處理 發生中文亂碼的三種情況及解決方案   表單form(傳送端分別採用get、post方式,接收端對應的解決辦法)  post:在接收的地方新增request.setCharacterEnc

GET與POST比較-使用HTTP協議將客戶請求傳送到伺服器的兩種方式

1、get是從伺服器上獲取資料,post是向伺服器傳送資料;2、 在客戶端,get方式在通過URL提交資料,資料在URL中可以看到,post方式資料放置在HTML HEADER內提交;3、 對於ge

關於java 傳送http json資料格式請求時,伺服器如何接收json資料並解析

一般情況下,傳送http請求時content-tye是application/x-www-form-urlencoded格式,而這樣的格式會以鍵值對的形似被封裝,至於是在瀏覽器傳送的時候被封裝的還是在伺服器端被封裝的我還不太清楚。但是我的猜測是在瀏覽器傳送請求的時候在客戶端

java判斷請求來自pc還是手機

ati 勿噴 pub [] -a 記錄 安卓 return one  記錄是為了更好的成長!  在項目中遇到一個問題,需要判斷請求是來自pc端還是手機端,如下直接貼代碼: /** * 判斷請求來自手機端還是電腦端 */ public s

HTTP 請求路徑無錯,但伺服器提示路徑錯誤, Controller 值重複了兩次

問題描述: 請求路徑(無錯):http://localhost:8080/lims-core/service/tms/template/addBean 但伺服器端提示錯誤(與請求路徑不一樣): WAR