Sencha Touch Ajax请求错误:Access-Control-Allow-Origin不允许使用Origin null。

时间:2013-05-22 02:29:45

标签: ajax jquery xmlhttprequest sencha-touch cors

我正在向远程服务器发出Ajax请求并以POST方式发送参数。 但我得到了以下回应:

**"MLHttpRequest cannot load http://rasovai.com/mobilecontact1.php?_dc=1369189135731. Origin null is not allowed by Access-Control-Allow-Origin.  "**

我读到了这个错误并发现它是因为CORS,所以我在请求中添加标题如下:

 Ext.Ajax.defaultHeaders = {
                                        'Accept': 'application/json',
                                        'Accept': 'Access-Control-Allow-Origin: *',
                                        'Accept': 'Access-Control-Allow-Credentials:   true',
                                          'Accept': 'Access-Control-Allow-Methods: OPTIONS, GET, POST',
                                        'Accept': 'Access-Control-Allow-Headers: Content-Type, Depth, User-Agent, X-File-Size, X-Requested-With, If-Modified-Since, X-File-Name, Cache-Control'
                                    };

但我在回复时仍然遇到同样的错误。

我可以在服务器上点击url,但无法传递参数。

在这方面,有人可以帮助我吗?

由于 Ishan jain

3 个答案:

答案 0 :(得分:2)

这些标题需要由服务器发送,而不是客户端。

答案 1 :(得分:0)

如果您使用的是Chrome浏览器,则可以使用--disable-web-security标记来允许跨域请求,如果您将其构建到应用程序中,则可以正常使用。有关更多详细信息,请查看此主题:How to use json proxy to access remote services during development

答案 2 :(得分:0)

如果您想将params传递给服务器,那么您可以按照以下步骤进行操作。

 Ext.Ajax.request({
            url : serverURL,
            jsonData : requestParams,  //  Object which encapsulates the request params
            method : 'POST',
            withCredentials: true,
            useDefaultXhrHeader: false,

           // List of header params can be sent as follows
            headers : {
                "Content-Type" : "application/json",
                "Accept" : "application/json",
                "Access-Control-Allow-Origin":"http://localhost:8080",
                "Authorization":auth
            },

            username : 'mobiliser',
            password : 'secret',
            success : function(response) {
             }
            failure : function ()
             {
             }

正如您在问题中所说,服务器位于不同的域中,您可能必须使用JSONP请求。

如果您有任何问题,请与我们联系。

Thanks- Gendaful