Antes de entender o que é jsonp cross-domain, vamos primeiro entender tal conceito: política de mesma origem.
O que é a Política de Mesma Origem:
Same Origin Policy e Sim, existe uma política de segurança (Same Origin Policy) nos navegadores. Um URL em um navegador geralmente inclui as seguintes partes, protocolo, nome de domínio e porta. Qualquer um desses três é diferente e é cross-domain.
O seguinte é Jsonp para resolver cross-domain:
Primeiro de tudo: o ajax não pode acessar as interfaces expostas por outros servidores: exemplo 3000→3001 (interface), porque as tags link, img, script (recurso estático) podem acessar recursos em outros serviços. Então usamos roteiro
window.cb = data =>{
// 创建回调函数。监测服务端返回的数据
console.log(data)
}
const src = `http://localhost:3001/users/login?cbName = cb&username = ${
username}&password = ${
password}`;
$("<script>").attr("src",src).appendTo("body") // 利用jQuery创建script标签,添加到body元素;
res.send(`${
cbName}(${
JSON.stringify(data)})`) // 回调执行函数
O acima é como o jsonp funciona. Resumindo, json é um formato de dados, jsonp é uma forma de chamar dados e json com retorno de chamada é jsonp.
Desvantagens: Este método suporta apenas o método get.