Файлы 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 использовать куки.