Файлы cookie не сохраняются в Sencha Touch 2

У меня есть веб-сервис "someWebServiceOnServer", который отправляет ответ json и Cookie. Если я нажму на этот URL через браузер, я увижу следующее:

{"IsAuth":true,"Message":"","UserName":"guest"}

И если я проверяю страницу Ресурсы -> Cookies, я вижу набор Cookie.

Теперь в моем приложении Sencha Touch 2 я выполняю вызов ajax следующим образом:

Ext.Ajax.request({
url: 'someWebServiceOnServer',
useDefaultXhrHeader: false,
callback: function(options, success, response) {
console.log(response.responseText)
},
});

При запуске этого я получаю ответ JSON, как и ожидалось. Но печенье не установлено. Также я не могу найти cookie в заголовке ответа. Почему это происходит?

Примечание: CORS был реализован на сервере, и мое приложение может получить доступ к этой службе. Я не пользовалась withCredentials: true, так как это выдает ошибку XMLHttpRequest cannot load . Cannot use wildcard in Access-Control-Allow-Origin when credentials flag is true.,

Файлы cookie уже включены в моем браузере.

Мне нужен файл cookie, так как я буду делать последующие вызовы, которые отправят эту информацию о файле cookie на сервер.

2 ответа

Решение

Попробуй это:

Добавьте следующие заголовки в ответ сервера.

Access-Control-Allow-Origin: http://clientdomain.com
Access-Control-Allow-Credentials: true

И добавить withCredentials: true в запросе Ajax.

Для IIS WCF с запросом ExtJS примените это к web.config (например, для локально размещенного приложения, например через SenchaTouch packagedr или PhoneGap):

<system.webServer>
          <httpProtocol>
            <customHeaders>
              <add name="Access-Control-Allow-Origin" value="http://localhost" />
              <add name="Access-Control-Allow-Headers" value="Origin, X-Requested-With, Content-Type, Accept" />
              <add name="Access-Control-Allow-Credentials" value="true" />
            </customHeaders>
          </httpProtocol>
        </system.webServer> 

А в Ext.JS запросе используйте эти параметры:

disableCaching: true,
useDefaultXhrHeader: false,
withCredentials: true

Это, в свою очередь, заставляет Ext.ajax.request использовать куки.

Другие вопросы по тегам