我正在处理 oauth 1.0(twitter 和 flickr)。网站工作在 80 端口,oauth 服务器工作在 8080 端口
算法:
- 向 oauth 服务器发送 ajax 请求以检查用户是否具有有效的 access_token
- 如果用户没有 access_token 或 access_token 已过期,则打开授权窗口
- 在 oauth 服务器的用户会话中保存 access_token
- 将共享数据发送到 oauth 服务器
它使用 sinatra + rack:session + rack::session::sequel + sqlite 来存储会话。它Set-Cookie: rack.session=id
在每个响应中发送
我正在使用 2 种类型的请求:带有 jquery 的跨域 ajax 和带有 window.open 的通常请求。我在将 cookie 传递给跨域 ajax 请求时遇到了很大的安全问题。
无论该服务器的响应标头是否包含
访问控制允许标头:*
铬会抛出安全错误:
拒绝设置不安全的标头“Cookie”
我想通过传递 rack.session=id 来发布数据并加载它来避免这个问题:
before "/twitter/connect.json" do
session = Rack::Session::something(params["rack.session"])
end
但我无法在文档中找到如何做到这一点