在 Rails API 上捕获客户端请求域的最简单方法是什么?
示例:
如果我使用 https://www.hurl.it/ 将 GET 请求发布到:
https://staging.mysite.com/api/v1/products?access_token=7b9f3cddd3914a6f45fa692997fe6dc9
如何捕获请求来自
hurl.it
?我试过:
request.host
request.url
request.referer
request.headers['origin']
我需要这个,因为我检查了访问令牌并且请求来自注册访问令牌的域。
API控制器:
module Api
module V1
class ApiController < ApplicationController
respond_to :json
before_filter :restrict_access
private
def restrict_access
api_app = ApiApp.find_by_access_token(params[:access_token])
binding.pry
head :unauthorized unless (api_app && (api_app.request_origin.include? request.host.split('?').first))
end
end
end
end
Rails 版本:4.2
我最终坚持使用 IP 地址:
head :unauthorized unless (api_app && (api_app.request_origin == request.env["HTTP_X_REAL_IP"] ||= request.env["REMOTE_ADDR"]))