c# - 检查 Ajax 请求

标签 c# javascript ajax httprequest

我研究了如何在 C# 中检查请求是否通过 AJAX 发送,但它似乎对我不起作用。我的代码如下。我使用一种方法在客户端对页面进行 AJAX(在我的例子中,正在使用 activeXobject)。 ajax 页面正在检查 ajax 属性服务器端的请求,但是 X-Requested-With 属性都没有返回任何内容(我在打印时得到空白)。想法?

Ajax 方法(Javascript)

/*
* Ajax page loads with url
* @param url : URL to call for ajax page load
* @param element : Element ID to be updated
*/
function ajax(url, element) {
    UtilLogger.log(HtmlLogger.INFO, "-AJAX Call for " + url + " in " + element + "-");
    var ajx;
    if (window.HXMLHttpRequest) {
        UtilLogger.log(HtmlLogger.FINE, "Using XMLHttpRequest");
        ajx = new XMLHttpRequest();
    }
    else {
        UtilLogger.log(HtmlLogger.FINE, "Using ActiveXObject");
        ajx = new ActiveXObject("Microsoft.XMLHTTP");
    }
    ajx.open("GET", url, true);
    ajx.send();
    ajx.onreadystatechange = function () {
        if (ajx.readyState == 4 && ajx.status == 200) {
            document.getElementById(element).innerHTML = ajx.responseText;
        }
        else if (ajx.readyState == 4 && ajx.status == 400) {
            alert("Page Error. Please refresh and try again.");
        }
        else if (ajx.readyState == 4 && ajx.status == 500) {
            alert("Server Error. Please refresh and try again.");
        }
    }
    UtilLogger.log(HtmlLogger.INFO, "-END AJAX Call for " + url + " in " + element + "-");
}

Ajax 登录检查(C#)

/* Checks for ajax request validity
 * @param HttpResponse resp : response to redirect if not ajax request
 * @param HttpRequest req : request to check for ajax
 */
public static void checkAjax(HttpResponse resp, HttpRequest req)
{
    if(req == null || 
        (req["X-Requested-With"] != "XMLHttpRequest" && 
        (req.Headers != null && req.Headers["X-Requested-With"] != "XMLHttpRequest"))){
           // resp.Redirect("./ajaxerror.aspx");
            resp.Write(req["X-Requested-With"] + ":" + req.Headers["X-Requested-With"]);
    }
}

最佳答案

您的客户端请求不会自动向您的服务器提供任何“X-Requested-With” header 或查询参数(但 Microsoft AJAX 等某些框架会提供)。 AJAX 调用像任何 HTTP 请求一样工作,添加一些 header :

xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");

关于c# - 检查 Ajax 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10209382/

相关文章:

c# - Entity Framework -动态sql

c# - 循环到 LINQ 转换 -

jquery - ajax.actionlink 路由值中是否可以有一个列表

javascript - 使用 javascript 从 Stackmob 获取数据

javascript - 将 "e"传递给新函数 - javascript

javascript - 在 Bootstrap 模式中重新加载 div 后使用scrollTop 时,不会考虑新高度

javascript - 基于另一个组合框选择自动填充组合框

c# - EF6 和多种配置(SQL Server 和 SQL Server Compact)

c# - 不同解决方案界面之间的区别

javascript - 调整浏览器窗口大小时更改图像