0

我在论坛上搜索并阅读了其他一些帖子。但是,我不确定该怎么做。我有一个带有代理的商店,我试图从服务器加载数据。我已经尝试了 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
            }
            */
        }
    }
});
4

2 回答 2

0

您正在本地域“sencha.test”上运行您的应用程序,但您正在尝试访问“leo.web”上的数据 - 错误是您正在尝试跨域加载数据,这是不允许的通过 AJAX。

你说 JSONP 不起作用……为什么不呢?您的服务器是否返回有效的 JSONP?

于 2013-01-15T18:35:57.580 回答
0

浏览器和桌面的安全策略是不同的,所以即使在浏览器中失败,它也可以在手机中工作。但现在的问题是如何在开发应用程序时进行管理,请看一下这个类似的问题:

开发过程中如何使用json代理访问远程服务

关于获得 403 响应的 OPTION 请求,请尝试设置withCredentials : falseuseDefaultHeader : 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在您的服务器上启用。

于 2013-01-16T13:55:28.870 回答