MobileSafari не будет отправлять файлы cookie, установленные с помощью CORS

У меня есть страница, загружающаяся в MobileSafari, которая общалась с другим сервером через CORS.

В настольных браузерах (проверенных Chrome и Safari) я могу войти в систему, получить файл cookie сеанса и отправить этот файл cookie сеанса обратно для последующих запросов, чтобы я мог проходить проверку подлинности при всех вызовах API.

Однако, когда я вхожу через Mobile Safari, cookieне получать обратно на последующие запросы.

Я использую Charles Proxy, чтобы шпионить за происходящим, и он говорит мне:

POST https://myremoteserver.com/sessions.json передает мою регистрационную информациюЭто успешно, и ответ получен с действительнымSet-Cookie заголовок.GET https://myremoteserver.com/checkout.json запрашивается, безCookie заголовок запроса.Сервер отвечает, как будто я не вошел в систему.

Я использую этот фрагмент сZepto.js чтобы убедиться, чтоwithCredentials: true правильно настроен на объекте XHR. (простите за кофейный текст)

# Add withCredentials:true to the xhr object to send the remote server our cookies.
xhrFactory = $.ajaxSettings.xhr
$.ajaxSettings.xhr = ->
  xhr = xhrFactory.apply(this, arguments)
  xhr.withCredentials = yes
  xhr

И этот фрагмент прекрасно работает в браузерах настольных компьютеров, и до того, как я его добавил, я не смог сохранить сессионные куки в этих браузерах.

Есть ли какая-то особенность в MobileSafari, которая мешает этому работать как настольные браузеры? Почему это не работает так же?

Редактировать!

вот моя настройка заголовков CORS в моем приложении rails 2.3, я думаю, что это довольно стандартная вещь

def add_cors_headers
  if valid_cors_domain
    headers['Access-Control-Allow-Origin']      = request.headers['HTTP_ORIGIN']
    headers['Access-Control-Expose-Headers']    = 'ETag'
    headers['Access-Control-Allow-Methods']     = 'GET, POST, PATCH, PUT, DELETE, OPTIONS, HEAD'
    headers['Access-Control-Allow-Headers']     = '*,x-requested-with,Content-Type,If-Modified-Since,If-None-Match'
    headers['Access-Control-Allow-Credentials'] = 'true'
    headers['Access-Control-Max-Age']           = '86400'
  end
end

Также сегодня настольный Safari на Mountain Lion начал не отправлять cookie, ведя себя так же, как MobileSafari. Я не совсем уверен, была ли моя оценка вчера неточной, или, возможно, Apple просто троллила меня ...

Также это может повлиять на использованиеhttps:// на удаленном URL?

Ответы на вопрос(4)

Ваш ответ на вопрос