0

在 SPA 模板中测试 WebAPI 身份验证时,我可以使用 Google Chrome 中的此 URL 创建用户、登录并检索示例待办事项:

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)

4

1 回答 1

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

于 2013-04-11T15:38:07.510 回答