У меня возникают проблемы с jquery 2.0.2 и получение его для определения кода статуса HTTP 403 при вызове моего API (размещенного на той же машине, как и статическая веб-страница вызова прибывает из). Из javascript веб-страницы я делаю $ .ajax GET против маршрута/сеансов, чтобы проверить, установлен ли файл cookie пользователя, ожидая 403, если такой файл cookie не существует или он недействителен.jQuery возвращает код состояния 404 вместо 403
Аякс будет установка загодя следующий вызов:
setupAjax: ->
$.ajaxSetup(
dataType: 'json'
xhrFields:
withCredentials: true)
АНИ (Nginx обратного бревнами прокси ниже) правильно возвращает 403 для неаутентифицированного пользователя:
127.0.0.1 - - [06/Jul/2013:22:48:25 -0700] "GET /1/sessions HTTP/1.1" 403 33 "https://foo.localhost.com/" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:22.0) Gecko/20100101 Firefox/22.0"
Firefox соглашается:
Однако когда вызывается обработчик ошибок xhr jQuery, код xhr.status по какой-то причине всегда 404, что полностью исключает логику. Например, скажем, что я использую вызов CoffeeScript ниже, когда-либо вызывается только обработчик 404, как если бы я дал ему правильный маршрут или даже несуществующий маршрут (который правильно возвращает 404 в обоих журналах сервера и Firefox)
checkSessionCookie: ->
$.ajax(
url: "#{@baseUrl}/sessions"
type: 'GET'
statusCode:
403: -> console.log "I'm a 403"
404: -> console.log "I'm a 404")
(сброс объекта XHR в консоли):
Object { readyState=4, status=404, statusText="error"}
Что здесь происходит? Я неправильно сконфигурировал jQuery, или я неправильно его использую? Здесь есть трюк?
Что это за сценарий, точно? Это не похоже на javascript для меня; вы должны добавить правильный тег к своему вопросу. – Daedalus
В нем упоминается сценарий кофе? – Owen
Проверить разрешения? Правило для правильных разрешений: Папки: 755 Статическое содержимое: 644 Динамический контент: 700 –