1

我正在使用带有 iframe 的 oauth2。在 app.rb 中的 redirect_uri 方法中,我正在重定向到“/”。但是,这导致我的“/”页面显示在 iframe 中,而不是在顶层。我可以在我的 ruby​​ 代码中解决这个问题吗?或者,我是否需要更改我的 HTML 或 Javascript?

在我的 HTML 中,我有:

<form action="https://XXX.XXXX.com/XXX/authorize" method="get" id="XXXForm" target="XXX">
    <input type="hidden" name="client_id" value="my_id"/>
   <input type="hidden" name="redirect_uri" value="https://somesite.com/redirect/XXX/"/>
</form>

并且,在 HTML 文件的末尾:

<script type="text/javascript">
 $('#XXX').show();
 $('#XXXForm').submit();
</script>

而且,在我的 app.rb 中,我有:

get '/redirect/XXX/' do
  redirect_to_url = '/login'
  if params[:code] then # authorized okay
    # other processing, e.g., get token
    redirect_to_url = '/'
  end
  p "redirect #{redirect_to_url}"
  redirect to redirect_to_url
end
4

1 回答 1

0

看看https://stackoverflow.com/a/168488/335847看看是否有帮助。

如果您要使用javascript,那么我会:

  • 改为使用 ajax 调用
  • 不要打扰 Sinatra 中的重定向
  • 只需返回请求的状态(2xx 之一表示成功或 4xx 或 5xx 表示失败
  • 记得使用halt以免返回身体(除非你想,但你仍然可以使用halt
  • request.xhr?如果需要,请使用
  • 使用成功处理程序(或类似的)来重定向页面,可能是通过使用全局window.
于 2013-10-26T13:03:57.383 回答