在SPA模板中测试WebAPI身份验证时,我可以使用Google Chrome中的此网址创建用户,登录并检索待办事项样本:
http://myhost.com:49688/api/TodoList
当我尝试使用curl或通过Fiddler检索待办事项时,我恢复了HTTP / 1.1 401 Unauthorized状态。
我正在使用的curl命令:
curl --request GET -H "Content-Type: application/json" http://uname:pass@myhost.com:49688/api/TodoList
的Fiddler 解析查询:
GET http://myhost.com:49688/api/TodoList
请求标题:
User-Agent: Fiddler
Host: localhost:49688
Authorization: Basic YWxpYmVyc29uOnRlc3R0ZXN0
如果我提供用户名和密码,为什么我会收到状态401? (我将myhost替换为localhost)
答案 0 :(得分:0)
我认为你正在使用反CSRF过滤器。为防止跨站点请求伪造,客户端需要包含服务器注入HTML页面的验证令牌。这可以防止恶意网站捎带您的登录凭据。
请参阅“反CSRF保护”部分中的http://www.asp.net/single-page-application/overview/introduction/knockoutjs-template。
更多背景资料:http://www.asp.net/web-api/overview/security/preventing-cross-site-request-forgery-(csrf)-attacks