Asp.net web api 允许在web api中使用自定义头

Asp.net web api 允许在web api中使用自定义头,asp.net-web-api,http-headers,Asp.net Web Api,Http Headers,我需要允许一个名为“secretToken”的自定义头。每次调用我的webapi,用户都应该传递这个头 我一直在寻找一种方法,但没有找到一种简单的方法。如何允许此自定义标题?您提到的“允许”表示从客户端传递?哪个客户 如果使用JavaScript,您可以执行类似的操作 $.ajax({ type: 'GET', url: '/api/values', dataType: 'json', contentType: 'application/json; charset

我需要允许一个名为“secretToken”的自定义头。每次调用我的webapi,用户都应该传递这个头


我一直在寻找一种方法,但没有找到一种简单的方法。如何允许此自定义标题?

您提到的“允许”表示从客户端传递?哪个客户

如果使用JavaScript,您可以执行类似的操作

$.ajax({
    type: 'GET',
    url: '/api/values',
    dataType: 'json',
    contentType: 'application/json; charset=utf-8',
    headers: { 'X-My-Secret-Token': 'Token' },
    success: function (data) {

    }
});
string url = "http://www.myurl/api/values";
var client = new HttpClient();
client.DefaultRequestHeaders.Add("X-My-Secret-Token", "Token");

var message = client.GetAsync(url).Result;
public class MyHandler : DelegatingHandler
{
    protected override async Task<HttpResponseMessage> SendAsync(
                                       HttpRequestMessage request,
                                             CancellationToken cancellationToken)
    {
        var headers = request.Headers;
        if (headers.Contains("X-My-Secret-Token"))
        {
             string token = headers.GetValues("X-My-Secret-Token").First();
        }
    }
}
如果是.NET客户端,您可以这样做

$.ajax({
    type: 'GET',
    url: '/api/values',
    dataType: 'json',
    contentType: 'application/json; charset=utf-8',
    headers: { 'X-My-Secret-Token': 'Token' },
    success: function (data) {

    }
});
string url = "http://www.myurl/api/values";
var client = new HttpClient();
client.DefaultRequestHeaders.Add("X-My-Secret-Token", "Token");

var message = client.GetAsync(url).Result;
public class MyHandler : DelegatingHandler
{
    protected override async Task<HttpResponseMessage> SendAsync(
                                       HttpRequestMessage request,
                                             CancellationToken cancellationToken)
    {
        var headers = request.Headers;
        if (headers.Contains("X-My-Secret-Token"))
        {
             string token = headers.GetValues("X-My-Secret-Token").First();
        }
    }
}
在Web API中,您可以从管道中的任何组件读取
HttpRequestMessage
对象中的头。例如,您可以从这样的处理程序中读取头

$.ajax({
    type: 'GET',
    url: '/api/values',
    dataType: 'json',
    contentType: 'application/json; charset=utf-8',
    headers: { 'X-My-Secret-Token': 'Token' },
    success: function (data) {

    }
});
string url = "http://www.myurl/api/values";
var client = new HttpClient();
client.DefaultRequestHeaders.Add("X-My-Secret-Token", "Token");

var message = client.GetAsync(url).Result;
public class MyHandler : DelegatingHandler
{
    protected override async Task<HttpResponseMessage> SendAsync(
                                       HttpRequestMessage request,
                                             CancellationToken cancellationToken)
    {
        var headers = request.Headers;
        if (headers.Contains("X-My-Secret-Token"))
        {
             string token = headers.GetValues("X-My-Secret-Token").First();
        }
    }
}
公共类MyHandler:DelegatingHandler
{
受保护的覆盖异步任务SendAsync(
HttpRequestMessage请求,
取消令牌(取消令牌)
{
var headers=request.headers;
if(headers.Contains(“X-My-Secret-Token”))
{
string token=headers.GetValues(“X-My-Secret-token”).First();
}
}
}

在.config文件中还有一件事:

    <httpProtocol>
        <customHeaders>
            <add name="Access-Control-Allow-Origin" value="*" />
            <add name="Access-Control-Allow-Headers" value="Origin, X-Requested-With, Content-Type, Accept,auth-key" />
        </customHeaders>
    </httpProtocol>


allow表示您希望检查您询问的来自的自定义标题client@Ajaybeniwal从客户端传递