2017-05-08 26 views
1

我不断收到问题与使用JavaScript库Axios公司问题与爱可信POST请求(JavaScript的)和西纳特拉/基础API(红宝石)

我有一个例子POST途径试图POST请求我的红宝石西纳特拉/基础API下面我西纳特拉API,爱可信一直采用爱可信库给我一般错误

# Running on http://localhost:9292 

class Endpoints < Sinatra::Base 
    register Sinatra::MultiRoute 

    before do 
    headers 'Access-Control-Allow-Origin' => 'http://localhost:8080', 
     'Access-Control-Allow-Methods' => ['OPTIONS', 'GET', 'POST'], 
     'Access-Control-Allow-Headers' => ['Content-Type'] 
    end 

    options '*' do 
    headers 'Access-Control-Allow-Origin' => 'http://localhost:8080', 
     'Access-Control-Allow-Methods' => ['OPTIONS', 'GET', 'POST'], 
     'Access-Control-Allow-Headers' => ['Content-Type'] 
    end 

    route :post, :options, '/create' do 
    # does something with params and return a JSON object 
    end 
end 

我的JavaScript代码:

// Running on http://localhost:8080 

axios.post('http://localhost:9292/create', { 
    some_val: 'some value' 
}) 
.then(res => { 
    console.log(res) 
}) 
.catch(err => { 
    console.log(err) 
}) 

我不断收到一个通用的javascript埃罗中的R我的控制台

POST http://localhost:9292/create 403 (Forbidden)  bundle.js:20263 
Error: Request failed with status code 403 
    at createError (bundle.js:12159) 
    at settle (bundle.js:19627) 
    at XMLHttpRequest.handleLoad (bundle.js:11996) 

我的服务器侧终端犯规给我什么更好的工作,它说200个状态码传递的选项,但给我什么,只要是什么原因导致403错误...没有PARAMS使其成功打入我的路线......

::1 - - [08/May/2017:12:49:35 -0700] "OPTIONS /create HTTP/1.1" 200 - 0.0030 
::1 - - [08/May/2017:12:49:35 -0700] "POST /create HTTP/1.1" 403 30 0.0076 
+0

嗨!你能解决吗?我现在有同样的问题,我donte得到idiea如何解决:( – Icaro

+0

@Icaro我不记得如果我得到了这个解决,我最终放弃了Sinatra和学习葡萄,它的光年比Sinatra更好,并提供更好的方式API功能 – aronlmin

回答

1

很好,谢谢你,我的作品与此变通办法:

before do 
    if request.request_method == 'POST' 
     body_parameters = request.body.read 
     begin 
     data= params.merge!(JSON.parse(body_parameters)) 
     @can_parse = true 
     rescue 
     puts "LOG: cant parse params" #TODO add real logger 
     @can_parse = false 
     end 
    end 
相关问题