我现在遇到一个问题,因为牵涉到跨域访问的需求。暂时比较纠结。get 和 post 请求都是没有问题的,当我使用 put 或者 delete 请求的时候就出问题了。
客户端的 js 代码部分,就是一个 jQuery 的 ajax 请求
$.ajax({
type:"put",
url:"http://localhost:3000/home/1",
data:{name:"Jerry"},
success:function(res){
console.log(res);
},
error:function(err){
console.log(err);
}
})
服务器端代码
def update
p "do update id:#{params[:id]},age:#{params[:age]}"
render json: {status:'y',msg:'修改成功'}
end
private
# 设置跨域访问的返回头
def set_header
response.headers["Access-Control-Allow-Origin"] = "*"
end
命令行输出的 bug 内容
tarted POST "/home" for ::1 at 2016-09-01 16:00:40 +0800
ActiveRecord::SchemaMigration Load (0.6ms) SELECT "schema_migrations".* FROM "schema_migrations"
Processing by HomeController#create as */*
Parameters: {"name"=>"Jerry"}
Can't verify CSRF token authenticity
"Jerry"
Completed 200 OK in 1ms (Views: 0.2ms | ActiveRecord: 0.0ms)
## post请求是可以的
---------
## put请求发送的method是options导致路由找不到
Started OPTIONS "/home/1" for ::1 at 2016-09-01 16:00:40 +0800
ActionController::RoutingError (No route matches [OPTIONS] "/home/1"):
actionpack (4.2.6) lib/action_dispatch/middleware/debug_exceptions.rb:21:in `call'
web-console (2.3.0) lib/web_console/middleware.rb:28:in `block in call'
浏览器请求信息截图
其实我只使用 get 和 post 请求就可以完全实现功能,但是为了长远来看,还是希望找到解决办法 帮忙看下,能不能提供个解决思路。