Thi*_*dio 2 http-headers asp.net-web-api
我需要允许一个名为"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) {
}
});
Run Code Online (Sandbox Code Playgroud)
如果是.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;
Run Code Online (Sandbox Code Playgroud)
在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();
}
}
}
Run Code Online (Sandbox Code Playgroud)
在.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>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7318 次 |
| 最近记录: |