Sencha Rest 代理无法访问 Localhost:3000 (Redmine) 上可用的数据
Sencha Rest Proxy not able to access Data available on Localhost:3000 (Redmine)
这是我的模型
Ext.define('ThemeApp.model.peopleModel', {
extend: 'Ext.data.Model',
fields: [
{ name: 'id' },
{ name: 'subject' },
{ name: 'description'}
],
proxy: {
type: 'rest',
format: 'json',
limitParam:"",
filterParam: "",
startParam:'',
pageParam:'',
url:'http://localhost:3000/issues/1',
/*
api: {
read : 'http://localhost:3000/issues'
},*/
headers: {'Content-Type': "application/json" },
//url : 'http://api.soundcloud.com/tracks?q=allah%20dita%20rehman%20khan&client_id=0b19b8dc2526b43eae19f03b2eab6798&format=json&_status_code_map[302]=200',
reader: {
type: 'json',
rootProperty:'issues'
},
writer: {
type: 'json'
}
}});
这是我的店铺:
Ext.define('ThemeApp.store.peopleStore', {
extend: 'Ext.data.Store',
model: 'ThemeApp.model.peopleModel',
storeId: 'peopleStore',
pageSize: 500,
autoLoad: true });
我想做的就是使用 Rest 代理填充此网格,并测试 Rest 代理的 GET 和 POST 方法。我能够使用此应用程序准备好 soundcloud api 但是当我尝试阅读 Redmine 问题时 (localhost:3000/issues.xml)
我收到此错误:
http://localhost:3000/issues.json just Look like http://www.redmine.org/issues.json 只有较少的数据。 Localhost:300/issue.json 确实存在!
有什么想法吗?
http://localhost:3000/issues.json
存在,但是
http://localhost:3000/issues/1.json
不存在。
为了休息api工作,需要使用url改写。
如果你有一个平面 .json 文件,你不应该使用 rest 代理,而应该使用 json 代理,你不会有这个问题。
您正在尝试对 Redmine API 执行 CORS 请求。不幸的是,Redmine 目前不支持 CORS,因此如果不进一步更改基础架构,这是不可能的(如果操作不当,可能会危及安全性)。
有插件将 CORS headers 添加到 Redmine 响应中,但据我所知,它们还不能完全确保系统安全。
鉴于这些限制,您对 Redmine 的请求只有在您的 ExtJS 应用程序从与 Redmine 相同的主机和端口提供服务时才有效,以便它在相同的来源运行,因此在没有任何明确的 CORS 支持的情况下工作。您可以通过在 Redmine 和您的 ExtJS 应用程序的静态文件之前使用代理服务器(例如 nginx)来启用此功能,以确保来源相同。
这是我的模型
Ext.define('ThemeApp.model.peopleModel', {
extend: 'Ext.data.Model',
fields: [
{ name: 'id' },
{ name: 'subject' },
{ name: 'description'}
],
proxy: {
type: 'rest',
format: 'json',
limitParam:"",
filterParam: "",
startParam:'',
pageParam:'',
url:'http://localhost:3000/issues/1',
/*
api: {
read : 'http://localhost:3000/issues'
},*/
headers: {'Content-Type': "application/json" },
//url : 'http://api.soundcloud.com/tracks?q=allah%20dita%20rehman%20khan&client_id=0b19b8dc2526b43eae19f03b2eab6798&format=json&_status_code_map[302]=200',
reader: {
type: 'json',
rootProperty:'issues'
},
writer: {
type: 'json'
}
}});
这是我的店铺:
Ext.define('ThemeApp.store.peopleStore', {
extend: 'Ext.data.Store',
model: 'ThemeApp.model.peopleModel',
storeId: 'peopleStore',
pageSize: 500,
autoLoad: true });
我想做的就是使用 Rest 代理填充此网格,并测试 Rest 代理的 GET 和 POST 方法。我能够使用此应用程序准备好 soundcloud api 但是当我尝试阅读 Redmine 问题时 (localhost:3000/issues.xml) 我收到此错误:
http://localhost:3000/issues.json just Look like http://www.redmine.org/issues.json 只有较少的数据。 Localhost:300/issue.json 确实存在!
有什么想法吗?
http://localhost:3000/issues.json
存在,但是
http://localhost:3000/issues/1.json
不存在。
为了休息api工作,需要使用url改写。
如果你有一个平面 .json 文件,你不应该使用 rest 代理,而应该使用 json 代理,你不会有这个问题。
您正在尝试对 Redmine API 执行 CORS 请求。不幸的是,Redmine 目前不支持 CORS,因此如果不进一步更改基础架构,这是不可能的(如果操作不当,可能会危及安全性)。
有插件将 CORS headers 添加到 Redmine 响应中,但据我所知,它们还不能完全确保系统安全。
鉴于这些限制,您对 Redmine 的请求只有在您的 ExtJS 应用程序从与 Redmine 相同的主机和端口提供服务时才有效,以便它在相同的来源运行,因此在没有任何明确的 CORS 支持的情况下工作。您可以通过在 Redmine 和您的 ExtJS 应用程序的静态文件之前使用代理服务器(例如 nginx)来启用此功能,以确保来源相同。