我注意到一个空的评论块在JSONP输出返回的facebook图形api为所有方法。
调用的URL:
https://graph.facebook.com/NUMERIC_FACEBOOK_ID/friends?access_token=ACCESS_TOKEN_STRING&callback=theGreatFunction
JSONP输出为:
/**/ theGreatFunction({
"data": [
{
"name": "First Friend",
"id": "XXXX"
},
{
"name": "Second Friend",
"id": "XXXXXX"
},
........
我的问题是:回调函数之前的空注释块/* */
表示什么?它有什么特殊的目的吗?
我们添加此功能是为了防止第三方站点通过以下方式绕过响应的内容类型的攻击:
<object type="application/x-shockwave-flash"
data="http://graph.facebook.com?callback=[specifically crafted flash bytes]">
</object>
Google做了类似的事情,除了他们使用//…+ n(例如http://www.google.com/calendar/feeds/developer-calendar@google.com/public/full?alt=json&callback=foo)
可以是某种固定起始的分隔符。我猜Facebook有理由把它放在那里但我们只能猜测,这并不重要,不是吗?:)