Sinatra对手机应用程序的请求不做任何处理

时间:2016-04-19 19:39:27

标签: ruby cordova post sinatra

我有一个带post块的简单sinatra服务器。如果我从浏览器发送$ .post,服务器会收到帖子,但是当从我的phonegap应用程序发送时,它什么都不做,没有错误代码或任何输出。

我之前写了一个简单的TCPServer #accept过程,因为我成功了,所以我继续学习sinatra,但发现了以下内容:

这篇文章在sinatra和TCPServer.accept

中运作良好
POST /api/v/1 HTTP/1.1
Host: localho.st:8015
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Origin: http://api.jquery.com
Cookie: _fitter_session=[deleted]
Content-Length: 7
Connection: keep-alive
Accept: */*
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/601.5.17 (KHTML, like Gecko) Version/9.1 Safari/601.5.17
Referer: http://api.jquery.com/jquery.post/
Accept-Language: en-us
Accept-Encoding: gzip, deflate

下一个在sinatra中不起作用,尽管它仍然在TCPServer

POST /api/v/1 HTTP/1.1
Host: localho.st:8015
Connection: keep-alive
Content-Length: 362
Accept: application/json, text/javascript, */*; q=0.01
Origin: file://
User-Agent: Mozilla/5.0 (Linux; Android 4.4.2; SM-G900F Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0 Safari/537.36
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Accept-Encoding: gzip,deflate
Accept-Language: en-US
Cookie: _fitter_session=[deleted]
X-Requested-With: com.myapp.myphonegapp

我认为我遗漏了一些显而易见但却找不到的东西,我在谷歌搜索但没有找到解决方案或类似的问题,欢迎任何帮助

提前致谢。

编辑: - 我尝试运行rails服务器并正确接收帖子。 - 此问题会影响从phonegap应用程序发送的get和post。

EDIT2:

Sinatra档案:

require 'sinatra'
# require 'sinatra/cross_origin'

set :port, 8015
#set :server, 'thin'

post '/api/v/1' do
  puts 'it worked!'
end

Phonegap ajax请求:

$.post('http://localho.st:8015/api/v/1', {
        test: 'foo'
      })
        .done(function(s) {
          console.log(s);
        })
        .fail(function(e) {
          console.log(e);
        })

如果我运行节点服务器并为应用程序提供服务请求成功运行(在浏览器中启用了cors),但在Android设备上,如果我用同一端口中的rails替换sinatra,它也不会,rails获取请求

1 个答案:

答案 0 :(得分:1)

尝试输入您的代码set :bind, '0.0.0.0'。我猜你的服务器只在localhost上监听。