【问题标题】:Getting Cookies in Sencha touch 2.0 using Ajax request在 Sencha touch 2.0 中使用 Ajax 请求获取 Cookie
【发布时间】:2012-06-25 14:18:17
【问题描述】:

我正在使用 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。

【问题讨论】:

  • 你试过document.cookie吗?

标签: javascript ajax cookies extjs sencha-touch-2


【解决方案1】:

在这里找到答案: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 为真,useDefaultXhreader 为假。这允许您的 ajax 请求查找、设置和请求可用的 cookie。当然,所有这些都假设您的服务器已设置为跨域 Ajax 调用。

【讨论】:

    【解决方案2】:

    据我所知,您可以通过跨域 AJAX 调用将 cookie 发送到位于不同域中的服务器。只需包含

        withCredentials : true,
        useDefaultXhrHeader : false,
    

    set-Cookie 值可以在请求头和响应头中看到,但是如果客户端和服务器在不同的服务器上,则无法通过 javascript 访问。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-07
      • 2014-08-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多