当用户访问启用了HSTS的网页时,浏览器会检测到此情况,并且将来会记得对该网站的请求使用HTTPS。有没有办法在AS3中请求页面并确定返回的页面是否支持HSTS(直接通过SWF中的AS3或使用ExternalInterface)?
答案 0 :(得分:1)
与维基百科定义它一样,HSTS (HTTP Strict Transport Security)是一个
的信息...由服务器通过名为" Strict-Transport-Security"的HTTP响应头字段传送给用户代理。
在这里我们可以理解,此信息仅可从HTTP响应标头中获得。对于Flash,它不可能获得HTTP响应标头,不像AIR能够使用HTTPStatusEvent获取它:
在Flash Player中,只有一种类型的HTTPStatus事件:httpStatus。在AIR运行时中,FileReference,URLLoader或URLStream可以注册以侦听httpResponseStatus,其中包括responseURL和responseHeaders属性。这些属性在httpStatus事件中未定义。
对于javascript(或者你想要的是ExternalInterface),要获得HTTP响应头,你必须使用AJAX,它只能通过启用客户端的CORS(Cross-Origin Resource Sharing)启用服务器来获取它跨域请求,否则,您将被服务器阻止,您的浏览器将显示一个漂亮的" No Access-Control-Allow-Origin ... "错误,当然所有使用browser which can do XMLHttpRequests across domains。
结论:如果启用了HSTS,则无论是Flash还是javascript(可能在某些情况下启用了CORS)都可以获得。