SPA模板中的Web API返回状态401传递用户名和密码时未经授权

时间:2013-04-10 17:19:22

标签: asp.net-mvc authentication asp.net-web-api restful-authentication single-page-application

在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)

1 个答案:

答案 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