2015-01-17 80 views
1

當用戶訪問啓用了HSTS的網頁時,瀏覽器會檢測到此情況,並且將來會記住對該網站的請求使用HTTPS。有沒有辦法在AS3中請求頁面,並確定返回的頁面是否支持HSTS(直接通過SWF中的AS3或使用ExternalInterface)?有沒有辦法確定一個站點是否在AS3中啓用了HSTS?

+0

當你說「一個網站」,你的意思是網站上的任何網站? – akmozo

+0

是的,但更具體的說,任何具有正確配置的crossdomain.xml文件的站點(比如允許來自'*')。那麼,SWF可以請求頁面本身或域中的資源,並以某種方式檢測該網站是否啓用了HSTS? – zretep

+0

我不知道這樣做。談到HTTP,協議,響應代碼和主要標題時,AS3的功能非常有限。您可以檢查網站是否支持HTTPS,但這並不能保證啓用了HSTS。也許有人通過ExternalInterface讀取頭文件,但我不會指望這一點。祝你好運! :) –

回答

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只能用CORSCross-Origin Resource Sharing)啓用服務器,使客戶端的跨域請求得到它,否則,你將被服務器阻止,你的瀏覽器會告訴你一個漂亮的「禁止訪問控制 - 允許 - 來源...」錯誤,當然所有使用browser which can do XMLHttpRequests across domains

結論:如果啓用或不啓用HSTS,則無論是Flash還是javascript(可能在某些情況下啓用CORS)都可以獲得。

相關問題