我有一个带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获取请求
答案 0 :(得分:1)
尝试输入您的代码set :bind, '0.0.0.0'
。我猜你的服务器只在localhost上监听。