Jquery Ajax Post响应头始终返回null

Jquery Ajax Post响应头始终返回null,jquery,ajax,http-headers,httpresponse,Jquery,Ajax,Http Headers,Httpresponse,我试图读取响应头“Token”中的值。这是我的jquery ajax代码 $(document).ready(function () { $("#post").click(function () { $.ajax({ type: "Post", url: 'http://localhost:1505/api/user/Login', data: $("

我试图读取响应头“Token”中的值。这是我的jquery ajax代码

 $(document).ready(function () {
        $("#post").click(function () {
                $.ajax({
                type: "Post",
                url: 'http://localhost:1505/api/user/Login',
                data: $("#form1").serialize(),,
                success: function (data, status, xhr) {
                 switch (status) {
                case "Not Found":
                    alert("Wrond Credentials.LogIN Again");
                    break;
                case "success":
                    alert("Hi");
                    var token= xhr.getResponseHeader("Token");
                    alert(token);
                    break;
            }
        }
            });
        });
    });
我检查了我在chrome“Inspect Element”中得到的响应标题,并验证了它是否存在。但是,当我在javascript代码中设置断点并检查getResponseHeader函数返回的值时,它是空的

这就是我添加标题的方式

 public string Login(User user)
    {
        if (ModelState.IsValid)
        {
            var found = (from p in db.Users
                         where (p.user == user.user && p.password == user.password)
                         select p).FirstOrDefault();
            if (found == null)
            {
                return "Not Found";
            }
          //  HttpResponseMessage response2 = Request.CreateResponse(HttpStatusCode.Found);
            Token token = new Token();
            string resptok = token.Generate(user);
            HttpContext.Current.Response.AddHeader("Token", resptok);
            return "Found";
        }
我还有一个处理程序类来启用CORS。这是代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Net.Http;
using System.Threading.Tasks;
using System.Threading;
using System.Net;

namespace AuthenticationDemo.Handlers
{
   public class CorsHandler : DelegatingHandler
{
    const string Origin = "Origin";
    const string AccessControlRequestMethod = "Access-Control-Request-Method";
    const string AccessControlRequestHeaders = "Access-Control-Request-Headers";
    const string AccessControlAllowOrigin = "Access-Control-Allow-Origin";
    const string AccessControlAllowMethods = "Access-Control-Allow-Methods";
    const string AccessControlAllowHeaders = "Access-Control-Allow-Headers";

    protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
    {
        bool isCorsRequest = request.Headers.Contains(Origin);
        bool isPreflightRequest = request.Method == HttpMethod.Options;
        if (isCorsRequest)
        {
            if (isPreflightRequest)
            {
                return Task.Factory.StartNew<HttpResponseMessage>(() =>
                {
                    HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.OK);
                    response.Headers.Add(AccessControlAllowOrigin, request.Headers.GetValues(Origin).First());

                    string accessControlRequestMethod = request.Headers.GetValues(AccessControlRequestMethod).FirstOrDefault();
                    if (accessControlRequestMethod != null)
                    {
                        response.Headers.Add(AccessControlAllowMethods, accessControlRequestMethod);
                    }

                    string requestedHeaders = string.Join(", ", request.Headers.GetValues(AccessControlRequestHeaders));
                    if (!string.IsNullOrEmpty(requestedHeaders))
                    {
                        response.Headers.Add(AccessControlAllowHeaders, requestedHeaders);
                    }

                    return response;
                }, cancellationToken);
            }
            else
            {
                return base.SendAsync(request, cancellationToken).ContinueWith<HttpResponseMessage>(t =>
                {
                    HttpResponseMessage resp = t.Result;
                    resp.Headers.Add(AccessControlAllowOrigin, request.Headers.GetValues(Origin).First());
                    return resp;
                });
            }
        }
        else
        {
            return base.SendAsync(request, cancellationToken);
        }
    }
}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用System.Web;
使用System.Net.Http;
使用System.Threading.Tasks;
使用系统线程;
Net系统;
命名空间AuthenticationDemo.Handlers
{
公共级CorsHandler:授权管理员
{
常量字符串Origin=“Origin”;
const string AccessControlRequestMethod=“访问控制请求方法”;
const string AccessControlRequestHeaders=“访问控制请求头”;
常量字符串AccessControlAllowOrigin=“访问控制允许原点”;
const string AccessControlAllowMethods=“访问控制允许方法”;
const string accesscontrolalloweaders=“访问控制允许标头”;
受保护的覆盖任务SendAsync(HttpRequestMessage请求,CancellationToken CancellationToken)
{
bool isCorsRequest=request.Headers.Contains(来源);
bool isPreflightRequest=request.Method==HttpMethod.Options;
如果(isCorsRequest)
{
如果(isPreflightRequest)
{
返回Task.Factory.StartNew(()=>
{
HttpResponseMessage response=新的HttpResponseMessage(HttpStatusCode.OK);
Add(AccessControlAllowOrigin、request.Headers.GetValues(Origin.First());
字符串accessControlRequestMethod=request.Headers.GetValues(accessControlRequestMethod.FirstOrDefault();
if(accessControlRequestMethod!=null)
{
Add(AccessControlAllowMethods,accessControlRequestMethod);
}
string requestedHeaders=string.Join(“,”,request.Headers.GetValues(AccessControlRequestHeaders));
如果(!string.IsNullOrEmpty(requestedHeaders))
{
添加(AccessControlAllowHeaders、requestedHeaders);
}
返回响应;
},取消令牌);
}
其他的
{
返回base.SendAsync(请求,取消令牌).ContinueWith(t=>
{
httpresponsemessageresp=t.结果;
resp.Headers.Add(AccessControlAllowOrigin,request.Headers.GetValues(Origin.First());
返回响应;
});
}
}
其他的
{
返回base.sendaync(请求、取消令牌);
}
}
}

}

在ajax中发布如何添加标题,请发布该代码too@SridharNarasimhan我已经添加了代码。非常感谢。