在支持 CORS 的后端存储 JSON
Store JSON on CORS enabled backend
好的所以我试了好几次才来这里问这个问题。
我的目标:
我正在为 android 构建一个 Phonegap 应用程序,它使用了大量 JSON 文件。 JSON 文件的内容也经常更改。目前,我在应用程序本身中提供 JSON 文件。但是由于更新频繁,我在PlayStore上更新了,我的用户每隔几天就得更新一次。
为了解决这个问题,我想在线托管 JSON 以便我的应用程序可以更新 JSON 而无需应用程序更新(我可以使用 localStorage 等,但是那不是真正的问题)。
我想使用 Parse.com 的后端来存储 JSON 文件(因为它们可以方便地更新数据)。我写了一个代码:
$.getJSON('myurl.parseapp.com/file.json', function(json) {
// do something here
});
我收到错误 Cross Origin Request Blocked
。因此,我在网上阅读了相关内容,他们说您必须先在服务器上启用 CORS,然后才能进行此类访问。
我不知道在 Parse 上启用它的任何方法。
我也试过使用 JSONP 插件 See here which one 但它总是进入 error
状态而不是 success
。我在网上阅读,他们说我的网站没有返回正确的 JSON(什么?)。什么是正确的JSON?这里可能会注意到我没有配置我的后端来处理回调,因为 Parse 没有提供这个(我猜)。
然后,我还使用了在线工具 like this,它允许托管 JSON 启用 CORS 的后端。但主要问题是 他们 为 JSON 提供 URL 我有点不喜欢它,因为我的代码逻辑需要使用一些自定义姓名和号码。另外,更新有点困难。
我之前没有使用过任何其他后端。
谁能帮帮我。
TL;DR
我正在寻找一个后端:
1. 可以托管我的 JSON 文件并启用 CORS。
2. 允许轻松更新 JSON 文件。
3. 自由。 :)
谢谢。
parse.com 的好人说他们在他们的服务上启用了 CORS。文章在这里
http://blog.parse.com/2012/01/19/javascript-and-user-authentication-for-the-rest-api/
"First, we’re launching support for cross-origin resource sharing, so that you can use Parse from Javascript that runs on any site. With the X-Parse-Application-Id and X-Parse-REST-API-Key headers, so that you can access Parse from Javascript on any domain."
他们的 api 要求您在请求中包含一些 headers,如下所示:
var xhr = new XMLHttpRequest();
xhr.open("POST", "https://api.parse.com/1/classes/Message", true);
xhr.setRequestHeader("X-Parse-Application-Id", "your application id");
xhr.setRequestHeader("X-Parse-REST-API-Key", "your REST API key");
xhr.setRequestHeader("Content-Type", "application/json");
xhr.onreadystatechange = function() {
if (xhr.readyState == 4) {
var result = JSON.parse(xhr.responseText);
if (result.objectId) {
alert("saved an object with id: " + result.objectId);
}
}
}
var data = JSON.stringify({ message: "Hello world!" });
xhr.send(data);
我希望您也可以在 GET 请求中包含 headers。
好的所以我试了好几次才来这里问这个问题。
我的目标:
我正在为 android 构建一个 Phonegap 应用程序,它使用了大量 JSON 文件。 JSON 文件的内容也经常更改。目前,我在应用程序本身中提供 JSON 文件。但是由于更新频繁,我在PlayStore上更新了,我的用户每隔几天就得更新一次。
为了解决这个问题,我想在线托管 JSON 以便我的应用程序可以更新 JSON 而无需应用程序更新(我可以使用 localStorage 等,但是那不是真正的问题)。
我想使用 Parse.com 的后端来存储 JSON 文件(因为它们可以方便地更新数据)。我写了一个代码:
$.getJSON('myurl.parseapp.com/file.json', function(json) {
// do something here
});
我收到错误 Cross Origin Request Blocked
。因此,我在网上阅读了相关内容,他们说您必须先在服务器上启用 CORS,然后才能进行此类访问。
我不知道在 Parse 上启用它的任何方法。
我也试过使用 JSONP 插件 See here which one 但它总是进入 error
状态而不是 success
。我在网上阅读,他们说我的网站没有返回正确的 JSON(什么?)。什么是正确的JSON?这里可能会注意到我没有配置我的后端来处理回调,因为 Parse 没有提供这个(我猜)。
然后,我还使用了在线工具 like this,它允许托管 JSON 启用 CORS 的后端。但主要问题是 他们 为 JSON 提供 URL 我有点不喜欢它,因为我的代码逻辑需要使用一些自定义姓名和号码。另外,更新有点困难。
我之前没有使用过任何其他后端。
谁能帮帮我。
TL;DR
我正在寻找一个后端: 1. 可以托管我的 JSON 文件并启用 CORS。 2. 允许轻松更新 JSON 文件。 3. 自由。 :)
谢谢。
parse.com 的好人说他们在他们的服务上启用了 CORS。文章在这里 http://blog.parse.com/2012/01/19/javascript-and-user-authentication-for-the-rest-api/
"First, we’re launching support for cross-origin resource sharing, so that you can use Parse from Javascript that runs on any site. With the X-Parse-Application-Id and X-Parse-REST-API-Key headers, so that you can access Parse from Javascript on any domain."
他们的 api 要求您在请求中包含一些 headers,如下所示:
var xhr = new XMLHttpRequest();
xhr.open("POST", "https://api.parse.com/1/classes/Message", true);
xhr.setRequestHeader("X-Parse-Application-Id", "your application id");
xhr.setRequestHeader("X-Parse-REST-API-Key", "your REST API key");
xhr.setRequestHeader("Content-Type", "application/json");
xhr.onreadystatechange = function() {
if (xhr.readyState == 4) {
var result = JSON.parse(xhr.responseText);
if (result.objectId) {
alert("saved an object with id: " + result.objectId);
}
}
}
var data = JSON.stringify({ message: "Hello world!" });
xhr.send(data);
我希望您也可以在 GET 请求中包含 headers。