puc*_*chu 6 ruby rack oauth sinatra cors
我正在处理oauth 1.0(twitter和flickr).网站在端口80工作,oauth服务器工作在端口8080
算法:
它使用sinatra + rack:session + rack :: session :: sequel + sqlite来存储会话.它发送Set-Cookie: rack.session=id
每个响应
我正在使用两种类型的请求:带有jquery的crossdomain ajax和带有window.open的常规请求.我有一个很大的安全问题,传递cookie到跨域ajax请求.
无论服务器的响应头包含什么
访问控制允许标题:*
铬会引发安全错误:
拒绝设置不安全的标题"Cookie"
我想通过传递rack.session = id来发布数据并加载它来避免这个问题:
before "/twitter/connect.json" do
session = Rack::Session::something(params["rack.session"])
end
Run Code Online (Sandbox Code Playgroud)
但我不能在文档中找到如何做到这一点
Rack::Session::Abstract::ID
有一个名为 的选项cookie_only
,允许通过 params 传入会话 ID。但是,它默认为 true,并且大多数会话中间件实现都懒得覆盖它。
你最好的选择可能是猴子补丁Rack::Session::Abstract::ID
默认cookie_only
为 false。
Rack::Session::Abstract::ID::DEFAULT_OPTIONS.merge! :cookie_only => false
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
784 次 |
最近记录: |