ajax請求cookie有效性問題驗證


與人討論時遇到一個問題,就是:

瀏覽器中后台發起的一個異步ajax請求,服務器做響應時,附帶了cookie信息,那么后續對同域名下其他頁面請求時,該cookie是否有效,會一並隨請求提交到web服務器呢?

自己是對web相關的標准不熟,只知道在普通前台請求時這種cookie會有效,對ajax請求的情況就暫時不確定。但想知道該問題的答案究竟是什么,去翻閱相關的標准是遠水救近火。本着It's easier to check than to guess的原則,決定先寫段程序來驗證這個問題。相關代碼如下

發起ajax請求的html頁面test.html的代碼為

1 <script type="text/javascript" src="lib/jquery-1.11.2.min.js"></script>
2 <script type="text/javascript">
3 $.get('/api/async', function(result){
4     window.location.href=result.url;
5 }, 'json')
6 </script>

后台'/api/async'和'/api/index'服務程序的代碼為

 1 import web
 2 import json
 3 
 4 class async:
 5     def GET(self):
 6         web.setcookie('web', 'python')
 7         return '{"url": "/api/index"}'
 8 
 9 class index:
10     def GET(self):
11         cookies = web.cookies()
12         return json.dumps(cookies)
13         
14 routes = (
15     '/api/async', 'async',
16     '/api/index', 'index'
17 )
18 
19 app = web.application(routes, globals(), False)
20 app.run()

我們用瀏覽器先訪問test.html頁面,在其中觸發異步ajax訪問'/api/async',如代碼所示,其響應結果有cookie信息,並且body是json數據,有一個url為'/api/index',test.html在收到響應后就前台跳轉訪問該url,'/api/index'服務響應中會將所有的cookie信息原樣返回給瀏覽器。

對比'/api/index'返回的結果與'/api/async'中設置的cookie,就可以知道前面問題的答案了,實際驗證結果如下圖所示

可以看出,Firefox中(具體使用的是version33.1),ajax異步請求'/api/async'的響應中設置的cookie,對后續其他其他前台頁面的請求是有效的

另外用IE11進行驗證,該cookie也是有效的!

~~ end ~~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM