我正在尝试使用 Rails 服务器创建 RESTful 服务。我看过网上的教程,显然我做错了什么。我的错误是 CORS 问题。我有一个用户模型和控制器。在我的用户控制器中,我试图更改标题以允许任何站点能够从服务器中提取信息。
class UsersController < ApplicationController
def options
if access_allowed?
set_access_control_headers
head :ok
else
head :forbidden
end
end
private
def set_access_control_headers
# headers['Access-Control-Allow-Origin'] = request.env['HTTP_ORIGIN']
headers['Access-Control-Allow-Origin'] = '*'
headers['Access-Control-Allow-Methods'] = 'POST, GET, OPTIONS'
headers['Access-Control-Max-Age'] = '1000'
headers['Access-Control-Allow-Headers'] = '*,x-requested-with'
end
def access_allowed?
allowed_sites = '*' #you might query the DB or something, this is just an example
return allowed_sites.include?(request.env['HTTP_ORIGIN'])
return true
end
end
我还设置了路由,因此当服务器被击中时,它会转到“选项”操作。
resources :users, :only => [:create]
match '/users', :controller => 'users', :action => 'options', :via => :get
我在我的开发机器上创建了一个 html 页面,我只是从 Chrome 打开它(我不知道这是否是一个问题。)当我试图抓住用户时,我得到
OPTIONS http://www.*****.com:3000/users 404 (Not Found) jquery.js:3
XMLHttpRequest cannot load http://www.****.com:3000/users. Origin file:// is not allowed by Access-Control-Allow-Origin.
有人请让我知道我做错了什么,或者指出一个可以帮助我的方向。