天天看点

使用jsonp实现跨源请求

jsonp

  • 该技术用来实现跨源请求,即向协议、域名、端口号不同的服务器发送请求
  • 通过使用 script 标签的 src 向服务器发送GET请求

    http://xxx/xxx?callback=callbackFunction

  • 服务器返回的是一串 javascript 并且会立刻在客户端执行

    callbackFunction(data)

例子:
// 客户端
function usejsonp() {
    const script = document.createElement("script");
    script.src = "http://127.0.0.1:8000/test?callback=jsonp";
    script.addEventListener("error", () => {
        console.log("error");
    });
    document.body.appendChild(script);
}

function jsonp(data) {
    console.log(data);
}
           
// 服务器端
app.get("/test", (req, res) => {
    const params = new URL(req.url, req.headers.referer);
    res.writeHead(200, { "Content-Type": "text/javascript" });
    const data = JSON.stringify({ state: "succeess" });
    const reqdata = `${params.searchParams.get("callback")}(${data})`;
    res.end(reqdata);
});