Facebook图形api JSONP格式,第一行中的/**/表示什么?

Dhr*_*hak 5 javascript jsonp facebook-graph-api

我注意到facebook graph api为所有方法返回的JSONP输出中有一个空注释块.

我打过的网址:

https://graph.facebook.com/NUMERIC_FACEBOOK_ID/friends?access_token=ACCESS_TOKEN_STRING&callback=theGreatFunction
Run Code Online (Sandbox Code Playgroud)

JSONP输出是:

/**/ theGreatFunction({
   "data": [
      {
         "name": "First Friend",
         "id": "XXXX"
      },
      {
         "name": "Second Friend",
         "id": "XXXXXX"
      },
     ........
Run Code Online (Sandbox Code Playgroud)

我的问题是:/* */回调函数前的空注释块表示什么?它有特殊的目的吗?它修复了任何已知的javascript问题吗?

Alo*_*lok 15

我们添加了此项以防止第三方站点通过执行以下操作绕过响应的内容类型的攻击:

<object type="application/x-shockwave-flash"
 data="http://graph.facebook.com?callback=[specifically crafted flash bytes]">
</object>
Run Code Online (Sandbox Code Playgroud)

谷歌做了类似的事情,除了他们使用// ... + \n(例如http://www.google.com/calendar/feeds/developer-calendar@google.com/public/full?alt=json&callback=foo)

  • 如果没有注释块,jsonp响应可以重新解释为动作脚本(flash)代码.swf文件格式表明前3个字节必须是FWS或CWS.空注释阻止了这一点. (3认同)