[英]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.