我有一个WebApi项目来提供数据,还有一个ASP.NET Core3.1项目来调用API。我使用Api调用者头部字段,如HOST,REFERER,ORIGIN来检测客户端域名,客户端域名调用Api来提供正确的数据,不希望post/get domain作为来自客户端的参数,只想让其他域名调用我的api,我根据域名提供数据,我实现如下:
Request.Headers.TryGetValue("Host", out var traceValueHost);
Request.Headers.TryGetValue("Referer", out var traceValueReferer);
Request.Headers.TryGetValue("Origin", out var traceValueOrigin);但是当我发布代码时,所有3个函数都返回null。实际上我检测不到客户端域和面对错误,会有什么问题?客户端如何通过get/post在Webapi call头中向我发送域名?
发布于 2021-05-04 21:32:20
我发现的唯一方法是将Origin添加到客户端域标头
public static async Task<T> GetWebApiAsync<T>(string postUrl, string domain="")
{
HttpClient Client = new HttpClient();
if (domain != "")
Client.DefaultRequestHeaders.TryAddWithoutValidation("Origin", domain);
string result = await Client.GetAsync(postUrl)?
.Result?.Content?.ReadAsStringAsync()??string.Empty;
if (result == string.Empty) return default(T);
return JsonConvert.DeserializeObject<T>(result);
}https://stackoverflow.com/questions/67346242
复制相似问题