我正在使用 ServiceStack 编写基于 REST 的服务,但作为身份验证的一部分,我需要授权跨域,但无法跨域读取 cookie,因此即使我的 JSON POST 到身份验证服务成功并且返回 SetCookie 结果,它永远不会看到该 cookie,因为它看不到它。
问题是,有没有其他方法可以解决这个问题,也许我可以通过请求标头或其他方式提供相同的值?
我正在使用 ServiceStack 编写基于 REST 的服务,但作为身份验证的一部分,我需要授权跨域,但无法跨域读取 cookie,因此即使我的 JSON POST 到身份验证服务成功并且返回 SetCookie 结果,它永远不会看到该 cookie,因为它看不到它。
问题是,有没有其他方法可以解决这个问题,也许我可以通过请求标头或其他方式提供相同的值?
如果客户端和接收方都允许,您可以在跨域请求中传递 cookie。在此处查看此链接
您可以在 Ajax 请求中使用HTTP BasicAuth HTTP 标头,服务器需要启用 BasicAuthProvider(),例如:
Plugins.Add(new AuthFeature(
() => new CustomUserSession(), //Use your own typed Custom UserSession type
new IAuthProvider[] {
new BasicAuthProvider(), //Sign-in with Basic Auth
//... other providers
}));
尽管请注意 BasicAuth 只是您的用户名/密码的 Base64 编码版本,因此理想情况下这应该通过 SSL 发生。
有关如何使用 jQuery 添加 BasicAuth 标头的信息,请参阅此答案。