【问题标题】:Where do I apply an 'Access-Control-Allow-Origin' header in a rails application我在哪里可以在 rails 应用程序中应用“Access-Control-Allow-Origin”标头
【发布时间】:2017-06-26 19:33:53
【问题描述】:

我正在尝试通过使用 ember.js 作为客户端的 rails 应用程序中的omniauth 链接到第三方身份验证页面。我能够将我的服务器重定向到正确的 url,但我无法将我的客户端发送到那里(导致我的服务器在请求阶段无限期挂起)。我的问题是我需要在我的应用程序中的某处设置Access-Control-Allow-Origin 标头,但我不确定在哪里。我目前在我的application_controller.rb 中有这个(非工作)设置:

class ApplicationController < ActionController::API
  # Force to wants JSON for API
  before_action :api_request_settings, :cors_preflight_check

  after_action :cors_set_access_control_headers

  def cors_preflight_check
    p 'hits cors preflight check'
    if request.method == :options
      headers['Access-Control-Allow-Origin'] = '*'
      headers['Access-Control-Allow-Methods'] = 'POST, GET, OPTIONS'
      headers['Access-Control-Allow-Headers'] = '*'
      headers['Access-Control-Request-Method'] = '*'
      headers['Access-Control-Max-Age'] = '1728000'
      render :text => '', :content_type => 'text/plain'
    end
  end

  def api_request_settings
    p request.headers
    request.format = :json
  end

  def cors_set_access_control_headers
    p 'hits cors acces set control headers'
    headers['Access-Control-Allow-Origin'] = '*'
    headers['Access-Control-Allow-Methods'] = 'POST, GET, OPTIONS'
    headers['Access-Control-Allow-Headers'] = '*'
    headers['Access-Control-Request-Method'] = '*'
    headers['Access-Control-Max-Age'] = "1728000"
  end

我做错了什么,我应该将这些标头放在哪里以将我的客户发送到目标网页?

【问题讨论】:

标签: ruby-on-rails ember.js http-headers cors access-control


【解决方案1】:

我们正在使用 GEM 在机架中处理它:https://github.com/cyu/rack-cors

【讨论】:

  • 我正在使用这个 gem。我实际上认为问题出在客户端,因为我试图重定向到外部授权 url 的第三方 API 的来源。 Here 是我的问题的当前状态
猜你喜欢
  • 2017-02-21
  • 1970-01-01
  • 2018-02-07
  • 2016-06-30
  • 2014-03-10
  • 2020-09-21
  • 2018-08-22
  • 2011-10-21
  • 2016-01-11
相关资源
最近更新 更多