SpringMvc 中处理 JSONP 需要注意响应的 Content-Type,如果为 text/plain 时在某些浏览器下就不能正确的执行 JSONP 的回调函数,认为其是不可执行的格式。
SpringMvc 返回对象时会把其自动的转换为 JSON 字符串,并且设置 Content-Type 为 application/json,如果返回 String 的话则 Content-Type 会设置为 text/plain,使用 JSONP 时需要返回 JSONP 格式的 String,这时例如在高版本的 Chrome 中就会出错,因为 Content-Type 是 text/plain,而不是 application/javascript。
服务器端:
- 使用 produces 设置响应的 Content-Type
- 返回 JSONP 格式的字符串,例如
jQuery21107523536464367151_1492668511201("Goo")
1 | import com.alibaba.fastjson.JSONPObject; |
浏览器端:
1 | $.ajax({ |