簡體   English   中英

C'# 檢查 Ajax 是否調用 c# 端

[英]C'# Checking if an Ajax call c# side

我在下面有一些代碼,這樣當用戶調用 mvc controller 中的方法時,它會進行一些檢查以查看它是否是 Ajax 調用。 如果 Ajax 返回 json 響應,否則返回 url 字符串(安全頁面)。 當我在 visual studio 中運行時,代碼運行良好,因此它識別出調用是 ajax 調用,但在生產服務器上變量“isAjax”設置為 false。 有什么理由可以在視覺(本地 iis)中本地工作,但不能在服務器上工作?

var isAjax = (filterContext.RequestContext.HttpContext.Request["X-Requested-With"] == "XMLHttpRequest") ||
                             ((filterContext.RequestContext.HttpContext.Request.Headers != null) &&
                             (filterContext.RequestContext.HttpContext.Request.Headers["X-Requested-With"] == "XMLHttpRequest"));

在瀏覽器的 .network 選項卡上顯示它正在通過(下圖)

網絡選項卡

public ActionResult GetData()
{
  if(Request.IsAjaxRequest())
        return RedirectToAction("AjaxRequest");
  else
        return RedirectToAction("NonAjaxRequest");
}

您可以在 controller 級別檢查當前請求,而不是檢查標頭。

AJAX 調用將有一個名為X-Requested-With的 header,其值為XMLHttpRequest 所以你可以這樣檢查:

bool isAjaxRequest = request.Headers["X-Requested-With"] == "XMLHttpRequest";

否則,您可以使用System.Web.MVC參考並使用 function。

bool isAjaxRequest = Request.IsAjaxRequest();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM