當用戶訪問啓用了HSTS的網頁時,瀏覽器會檢測到此情況,並且將來會記住對該網站的請求使用HTTPS。有沒有辦法在AS3中請求頁面,並確定返回的頁面是否支持HSTS(直接通過SWF中的AS3或使用ExternalInterface)?有沒有辦法確定一個站點是否在AS3中啓用了HSTS?
1
A
回答
1
像Wikipedia定義它,HSTS (HTTP Strict Transport Security)是
...由服務器通過命名爲「嚴格 - 傳輸 - 安全」 HTTP響應報頭字段傳送給用戶代理的信息。
這裏我們可以理解,這個信息只能從HTTP響應頭文件中獲得。對於Flash,這是不可能得到的HTTP響應頭,不像空氣中能夠使用HTTPStatusEvent得到它:
在Flash Player中,只有一種類型的HTTPStatus事件:則httpStatus。在AIR運行時中,可以註冊FileReference,URLLoader或URLStream以偵聽httpResponseStatus,其中包括responseURL和responseHeaders屬性。這些屬性在httpStatus事件中未定義。
對JavaScript(或ExternalInterface的,如果你想),獲得HTTP響應頭,你必須使用AJAX只能用CORS(Cross-Origin Resource Sharing)啓用服務器,使客戶端的跨域請求得到它,否則,你將被服務器阻止,你的瀏覽器會告訴你一個漂亮的「禁止訪問控制 - 允許 - 來源...」錯誤,當然所有使用browser which can do XMLHttpRequests across domains。
結論:如果啓用或不啓用HSTS,則無論是Flash還是javascript(可能在某些情況下啓用CORS)都可以獲得。
相關問題
- 1. WebAudio:有沒有辦法確定節點是否連接到另一個節點?
- 2. 有沒有辦法檢查RenderScrpt是否正確綁定了rs_allocation?
- 3. 有沒有辦法確定Convert.ToDateTime是否添加了年份?
- 4. 有沒有辦法確定一個python腳本是否由Cron啓動?
- 5. 有沒有辦法確定Flash是否緩存了一個對象?
- 6. 有沒有辦法檢測一個網站是否使用SPDY?
- 7. 有沒有辦法確定在Vim中是否已經定義了高亮區?
- 8. 有沒有辦法確定一個特定的Ajax是否仍在運行?
- 9. 有沒有辦法確定JavaScript函數是否有副作用?
- 10. 有沒有辦法確定Firebase用戶的UID是否有效?
- 11. 有沒有辦法確定Mac是否連接了多個鼠標?
- 12. 有沒有辦法檢查是否在php或javascript中啓用了流水線?
- 13. 有沒有辦法在運行時確定是否使用Lambdaj.on()方法創建了一個對象?
- 14. 有沒有辦法確定是否安裝了iPhone/iPad應用程序?
- 15. 有沒有辦法確定兩個IOHIDDeviceRef是否屬於同一個設備?
- 16. 有沒有辦法確定Java System.in是否是「交互式」?
- 17. 有沒有辦法確定JDBC事務是否有效?
- 18. 有沒有辦法確定一年是否有Swift中的閏月?
- 19. Androguard有沒有辦法確定某個方法是否可以實際調用?
- 20. 有沒有辦法檢測用戶是否禁用/啓用了crossrider擴展
- 21. 有沒有辦法確定一個類是Java中的一個實例?
- 22. 有沒有辦法確定stdout是否指向控制檯?
- 23. 有沒有辦法確定輸入流是否只讀?
- 24. 有沒有辦法確定neo4j數據庫是否已關閉?
- 25. 有沒有辦法確定頁面是否被壓縮?
- 26. 有沒有辦法確定Linux PID是否暫停?
- 27. 有沒有辦法確定任務是否被重新分配?
- 28. 有沒有辦法檢查一個網站是否基於URL存在Cookie?
- 29. 有沒有辦法檢查Android上是否啓用了「從未知源安裝」?
- 30. 有沒有辦法知道Data Saver是否啓用?
當你說「一個網站」,你的意思是網站上的任何網站? – akmozo
是的,但更具體的說,任何具有正確配置的crossdomain.xml文件的站點(比如允許來自'*')。那麼,SWF可以請求頁面本身或域中的資源,並以某種方式檢測該網站是否啓用了HSTS? – zretep
我不知道這樣做。談到HTTP,協議,響應代碼和主要標題時,AS3的功能非常有限。您可以檢查網站是否支持HTTPS,但這並不能保證啓用了HSTS。也許有人通過ExternalInterface讀取頭文件,但我不會指望這一點。祝你好運! :) –