我需要允许一个名为“secretToken”的自定义标头。每次调用我的 webapi,用户都应该传递这个标头。
我搜索了一种方法来做到这一点,但我找不到一个简单的方法。我怎样才能允许这个自定义标题?
我需要允许一个名为“secretToken”的自定义标头。每次调用我的 webapi,用户都应该传递这个标头。
我搜索了一种方法来做到这一点,但我找不到一个简单的方法。我怎样才能允许这个自定义标题?
.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>
您提到“允许”意味着从客户端传递?哪个客户?
如果是 JavaScript,你可以做这样的事情。
$.ajax({
type: 'GET',
url: '/api/values',
dataType: 'json',
contentType: 'application/json; charset=utf-8',
headers: { 'X-My-Secret-Token': 'Token' },
success: function (data) {
}
});
如果是 .NET 客户端,您可以执行类似的操作。
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;
在 Web API 中,您可以HttpRequestMessage
从管道中的任何组件读取对象中的标头。例如,您可以像这样从处理程序中读取标头。
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();
}
}
}