有没有办法确定某个站点是否在AS3中启用了HSTS?

时间:2015-01-17 15:44:39

标签: actionscript-3 flash hsts

当用户访问启用了HSTS的网页时,浏览器会检测到此情况,并且将来会记得对该网站的请求使用HTTPS。有没有办法在AS3中请求页面并确定返回的页面是否支持HSTS(直接通过SWF中的AS3或使用ExternalInterface)?

1 个答案:

答案 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,它只能通过启用客户端的CORSCross-Origin Resource Sharing)启用服务器来获取它跨域请求,否则,您将被服务器阻止,您的浏览器将显示一个漂亮的" No Access-Control-Allow-Origin ... "错误,当然所有使用browser which can do XMLHttpRequests across domains

结论:如果启用了HSTS,则无论是Flash还是javascript(可能在某些情况下启用了CORS)都可以获得。