0

我正在使用 Sencha touch 2.0 开发一个网络移动项目

我提出了一个ajax请求如下:

Ext.Ajax.request({
  url: myUrl,
  params: {
    format: 'xml',
    callback: 'success'
  },
  method :'POST',
  xmlData :MyXMLData
  proxy:{
    type: 'ajax',
    reader:{
      type: 'xml',
      rootProperty:'ns2:user'
    }
  },

在服务器端,我设置了以下标头:

header("Access-Control-Allow-Origin: *");

服务器返回一个 XML 响应和 cookie

通过使用 Chrome 的调试工具,我可以看到返回了各种 Set-Cookie 标头

问题是如何获取这些 Cookie 以便与其他请求一起设置?

笔记:

我尝试了 response.getAllResponseHeaders() 但这不适用于 Set-Cookies。

4

2 回答 2

3

在这里找到答案:https ://stackoverflow.com/a/7189502/1106877

不幸的是,Sencha 论坛的答案几乎没有提供有关如何执行此操作的指导。在 Sencha Touch 中,上面链接的等效解决方案是:

Ext.Ajax.request({
            url: 'http://myurl/log_user_in.json',
            params: { username: user, password: pass, app_id: id },
            withCredentials: true,
            useDefaultXhrHeader: false,
            method: "POST" });

它也适用于使用 Ajax 的商店代理。

确保 withCredentials 为 true 并且 useDefaultXhreader 为 false。这允许您的 ajax 请求查找、设置和请求可用的 cookie。当然,所有这些都假设您的服务器已设置为跨域 Ajax 调用。

于 2012-07-24T15:18:27.147 回答
0

As far as I know , you can send the cookie to the server which is in a different domain by making a cross domain AJAX call.Just include

    withCredentials : true,
    useDefaultXhrHeader : false,

The set-Cookie value can be seen in request and response headers , but it cannot be accessed through javascript if the client and server are on different servers.

于 2013-10-10T09:14:03.497 回答