我在论坛上搜索并阅读了其他一些帖子。但是,我不确定究竟是怎么回事。我有一个带有代理的商店,我正在尝试从服务器加载数据。我没有运气就尝试了jsonp和rest代理类型。在这两种情况下,我都会收到403禁用错误。后跟XMLHTTPRequest无法加载错误。
以下是我在Chrome控制台中看到的错误:
这是我的代码:
Ext.define('EventsTest.store.Venues', {
extend: 'Ext.data.Store',
requires: [
'Ext.data.proxy.Rest',
],
config: {
storeId: 'venuesStore',
model: 'EventsTest.model.Venue',
proxy: {
type: 'rest',
url: 'http://leo.web/pages/api/',
headers: {
'x-api-key': 'senchaleotestkey'
},
limitParam: false,
pageParam: false,
enablePagingParams: false
/*
extraParams: {
latitude: 45.250157,
longitude: -75.800257,
radius: 5000
}
*/
}
}
});
答案 0 :(得分:0)
您正在本地域“sencha.test”上运行您的应用,但您正在尝试访问“leo.web”上的数据 - 错误是您尝试跨域加载数据,这不是不允许通过AJAX。
你说JSONP不起作用......为什么不呢?您的服务器是否返回有效的JSONP?
答案 1 :(得分:0)
浏览器和桌面的安全策略不同,所以即使它在浏览器中失败也可以在手机中工作。但现在的问题是如何在开发应用程序时进行管理,因为看看这个类似的问题:
How to use json proxy to access remote services during development
关于获得403响应的OPTION请求,请尝试设置withCredentials : false
和useDefaultHeader : false
。详情
http://docs.sencha.com/touch/2-1/#!/api/Ext.data.Operation-cfg-withCredentials http://docs.sencha.com/touch/2-1/#!/api/Ext.data.Connection-cfg-useDefaultHeader
如果您想使用远程服务,我建议您阅读有关CORS
的更多信息,您可以选择在服务器上启用CORS
。