【发布时间】:2016-03-07 02:44:28
【问题描述】:
我需要在没有任何授权的情况下调用 RESTful API。 API 使用自己的自定义授权。我可以使用 Postman 成功访问 API,但是从我的应用程序中,对完全相同的 URL 的调用失败并显示“访问被拒绝”。我能看到的唯一区别是 Postman 设置为“No Auth”
这是调用的代码:
var task = client.GetAsync(url)
.ContinueWith((taskwithresponse) =>
{
var response = taskwithresponse.Result;
var jsonString = response.Content.ReadAsStringAsync();
jsonString.Wait();
var model = JsonConvert.DeserializeObject<object>(jsonString.Result).ToString();
});
task.Wait();
我已经搜索了一个多小时,但找不到任何关于此的内容。非常感谢任何帮助。
以下是 Postman 返回的标头:
Access-Control-Allow-Headers → Content-Type
Access-Control-Allow-Methods → GET, POST, PUT, DELETE, OPTIONS
Access-Control-Allow-Origin → *
Cache-Control → no-cache
Content-Length → 70838
Content-Type → application/json; charset=utf-8
Date → Wed, 02 Dec 2015 18:10:13 GMT
Expires → -1
Persistent-Auth → false
Pragma → no-cache
Server → Microsoft-IIS/7.5
WWW-Authenticate → Negotiate oYG2MIGzoAMKAQChCwYJKoZIgvcSAQICooGeBIGbYIGYBgkqhkiG9xIBAgICAG+BiDCBhaADAgEFoQMCAQ+ieTB3oAMCARKicARuLFrwoBSpoL7PwlX1E3MEnL7ub3KtmgZG2iGIfYqY+QyGXI1btpDaiLIBFstpQeunfY8DvHV/dcTbsVSeGW/ciuM/aZi1nG2AfHjlu6neYlTJTASF2bGv/M1EKkZRDvRoND2uLbfGdiXzrN5+M3U=
X-AspNet-Version →
X-AspNet-Version
Custom header
4.0.30319
X-Powered-By → ASP.NET
X-UA-Compatible → IE=edge
没有从 Postman 发送任何标题。
【问题讨论】:
-
你使用的是HttpClient还是RestSharpClient?
-
我正在使用 HttpClient
-
你能分享 Postman 的 HTTP 标头吗?
-
我刚刚将标题添加到原始问题中。
-
看起来您正在使用 Kerberos 在公司休息服务上进行身份验证。您只需要在 HttpClient 上打开 UseDefaultCredentials。请注意,在 prod 中,该服务还需要在授权使用此 rest 服务的服务帐户下运行。
标签: c# asp.net-mvc rest restful-authentication