[Node.js]ExpressでJSONP対応を簡単に行う方法


res.sendではなくres.jsonpを使えばJSONP対応が簡単に行えます。

express APIリファレンスの内容のままですが

res.jsonp(null)
// => null

res.jsonp({ user: 'tobi' })
// => { "user": "tobi" }

res.jsonp(500, { error: 'message' })
// => { "error": "message" }

としておけば、通常時はJSONとして、リクエストパラメータにcallbackが指定されている場合は自動的にJSONPとして返してくれます。

// ?callback=foo
res.jsonp({ user: 'tobi' })
// => foo({ "user": "tobi" })

app.set('jsonp callback name', 'cb');

// ?cb=foo
res.jsonp(500, { error: 'message' })
// => foo({ "error": "message" })

手軽ですね。

参考