我正在尝试使用Meteor创建一个简单的移动应用程序,它将用户位置数据发送到地理空间数据库/服务器。我不确定我试图做的事情是否真的可能与Meteor或我做错了什么。
没有Meteor服务器组件,只有客户端代码。首先,我需要使用POST请求从服务器获取令牌。这在测试代码时起作用(meteor run android-device)。我可以看到令牌信息。但是当我构建Android手机应用程序时,它不起作用。我尝试了多种方法来获取令牌(AJAX POST,Meteor Http和XMLHttpRequest),所有这些都在测试时起作用。
我已经通过Meteor和CORS文档以及许多其他类似问题的帖子,但似乎无法找到解决方案。这是我第一次在这个领域工作,所以我不确定我是否遗漏了一些明显的东西,或者我在生产中是否不允许我在Meteor中做什么。
所以,
我试图在Meteor手机应用程序中不允许这样做(应用程序没有使用Meteor服务器,我工作时没有启动)?
这是一个CORS问题我处理得不好,即使我在测试时可以发帖吗?
在构建Android / iOS应用程序时,我需要做些什么吗?
问题是别的吗?
我真的不确定还有什么可看,或者如何进一步排查问题。
感谢您的帮助!
以下是POST请求的一些(已清理的)代码段,这些代码段在测试时是否有用。
AJAX:
var getToken_ajax = function() {
var tokenData = {
username: "theusername",
password: "thepassword",
f: 'json',
expiration: 60,
client: 'referer',
referer: window.location.origin
};
$.ajax({
url: "https://<address>:<port>/arcgis/tokens/generateToken",
dataType: 'json',
type: 'POST',
data: tokenData,
crossDomain: true,
success: function(data, textStatus, jqXHR) {
// do something
},
error: function(data, textStatus, jqXHR) {
// do something
}
});
};
的XMLHttpRequest:
var getToken_XMLHttpRequest = function() {
var tokenData = "username=theusername&password=thepassword&f=json&expiration=60&client=referer&referer=" + window.location.origin;
var xhr = new XMLHttpRequest();
var url = 'https://<address>:<port>/arcgis/tokens/generateToken/';
var xhrHistoryText;
var body = tokenData;
function doPost() {
if (xhr) {
xhr.open('POST', url, true);
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=UTF-8");
xhr.setRequestHeader("Accept", "Accept:application/json, text/javascript, */*; q=0.01");
xhr.onreadystatechange = stateChangeHandler;
xhr.send(body);
}
else {
// do something
}
}
function stateChangeHandler(evtXHR) {
// do something
}
doPost();
};
答案 0 :(得分:0)
原来没有适当的证书。一旦到位,POST在生产中按预期工作。