2025-11-20 05:47:26
因为JSONP是通过在URL里加回调函数名来获取数据的,而GET请求的参数可以放在URL后面,所以只能用GET。比如服务器返回`jsonpcb`,浏览器就会执行这个函数拿到数据。
因为浏览器不让跨域POST请求直接获取数据,而JSONP只能通过GET的URL参数传递回调函数。比如用POST的话,服务器无法在响应里嵌入回调函数,就像快递员不能在包裹里塞地址一样。据统计,85%的跨域场景用JSONP替代CORS,但只能处理GET请求。比如当用户用`)`,浏览器就会自动执行这个函数。而POST请求比如`POST /api`,服务器返回的JSON数据无法被包裹在回调函数里,所以只能用GET。JSONP的回调函数名必须是服务器控制的,比如不能自己随便写`callback=abc`,必须和服务器协商好,就像两个人约好暗号一样。
本题链接: