我想创建控制器以实现下图中显示的行为:
如果有可能,有人可以提供一个例子吗?
编辑:只想使用Facebook SDK从站点A到Facebook(站点C)通过站点B代理所有发布请求。
如果有用,请找到此代码:
def default
result = Net::HTTP.get_response(
"realserver.internal.net",
@request.env["REQUEST_URI"]
)
#render error if result. ...
render_text result.body
end
end
答案 0 :(得分:1)
看起来你根本就不需要铁轨。你想要的是一个反向代理(这里有很多选择)。我建议nginx
答案 1 :(得分:0)
看起来您正试图隐藏请求的位置,或者绕过浏览器的csrf保护。如果是前者,您可能希望限制可以从站点C请求的URL,因为您可能会通过Internet公开所有站点C的Intranet页面。如果是后者,您考虑过JSONP还是CORS?这对用户来说会更快,并且通过站点B的流量也会减少。
请注意,根据您在图表中绘制的方法,您将网站C的内容视为属于网站B,并且需要考虑所有安全和法律问题。
如果你仍然想按照你所描述的方式去做,如果你可以保持相同的路径,在站点B和站点C之间查询字符串和片段ID,那么上面的例子就可行了。
另外,不要参考@request,请使用请求。 request.fullpath可以代替@ request.env [“REQUEST_URI”]
编辑:此外,aVenger是对的,反向代理也可以。优点:更快,更少的代码。缺点:无法以编程方式确定是否接受请求,向请求添加动态变量等。对于您的Facebook事情,它可能会起作用。