我正在使用jquery發出一個ajax請求,並且一切正常,除了頁面被保護,所以只有登錄後才能發出請求。我已經登錄,但我認爲jquery ajax不會發送我的cookie到網址。我怎樣才能解決這個錯誤,這樣cookies,頭文件也會被髮送出去,這樣頁面就不會把它當成401請求呢?Ajax jquery未經授權的請求
感謝提前:)
我正在使用jquery發出一個ajax請求,並且一切正常,除了頁面被保護,所以只有登錄後才能發出請求。我已經登錄,但我認爲jquery ajax不會發送我的cookie到網址。我怎樣才能解決這個錯誤,這樣cookies,頭文件也會被髮送出去,這樣頁面就不會把它當成401請求呢?Ajax jquery未經授權的請求
感謝提前:)
這聽起來像你想從您的網站上運行的一個要求在不同域的頁面。如果是這樣的話,那就是瀏覽器告訴你這個請求是未授權的,而不是其他的網站。
編輯:
如果是這樣的話,你控制的其他網站,那麼我相信你可以使用一個特定的報頭(http://www.w3.org/TR/2008/WD-access-control-20080912/#access-control-allow-origin)允許請求。如果你不控制其他服務器,那麼這個問題沒有(純粹的JavaScript)方式。
您可以在您控制的服務器上運行代理以請求該頁面並將其傳遞給您。但是,這仍然存在問題,即它將在沒有用戶Cookie的情況下請求該頁面。
我的jQuery的解決方案: 在你的Ajax調用(基本授權):
headers: {
"Authorization": "Basic " + btoa('username:password')
},
或
beforeSend: function (xhr){
xhr.setRequestHeader('Authorization', "Basic " + btoa('username:password'));
},
其實我有一個基本的身份驗證(Windows身份驗證)設置以及表單身份驗證。這可能是jquery ajax的問題嗎? – Jaggu
如果您自己在請求中設置標頭,它看起來像是基本驗證(http://dothow.blogspot.com/2009/05/http-basic-authentication-with-jquery.html)。當然,如果請求與頁面來自同一個域,這仍然只能工作。 – alnorth29