我在jquery 2.0.2中遇到問題,並在調用我的API時讓它識別HTTP 403狀態碼(託管在同一臺機器上,就像靜態網頁呼叫一樣來自)。從一個網頁的JavaScript,我做了一個$ .ajax GET反對/會議路線來檢查用戶的cookie是否目前設置,期待403如果沒有這樣的cookie存在,或者如果它是無效的。jQuery返回狀態代碼404而不是403
Ajax是用下面的呼叫的時間提前被加以設定:
setupAjax: ->
$.ajaxSetup(
dataType: 'json'
xhrFields:
withCredentials: true)
的API(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"
火狐同意:
但是當jQuery的xhr錯誤處理程序被調用時,xhr.status代碼由於某種原因始終是404,從而將邏輯完全拋出。例如,假如我在下面使用CoffeeScript調用,則只有404處理程序會被調用,如果我給它一個正確的路由或者甚至不存在的路由(它在服務器日誌和Firefox中正確返回404)
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 –