Ajax-19:如何解决跨域问题

简介: Ajax-19:如何解决跨域问题

什么是JSONP?

jsonp是一个非官方的跨域解决方案,只支持GET请求。

JSONP是如何工作的?

网页中有一些原本就具有跨域能力的标签,比如img,link,iframe,script,jsonp就是利用script标签的跨域能力进行发送请求的。

  • 以script标签为例,jsonp接受的不能是普通的字符串,而应当是js代码

image.png

原生jsonp跨域案例

  • 当用户的焦点离开输入框时,发送jsonp请求,然后返回该用户名已存在,同时将输入框的边框颜色变成红色。
  • 客户端:
// 获取input和p标签
const input = document.querySelector('input');
const p = document.querySelector('p');
// 定义handle函数
function handle(data) {
    input.style.border = 'solid 2px red';
    p.innerHTML = data.msg;
};
// 当用户的焦点移出输入框时触发函数
input.onblur = function() {
    // 获取用户输入的值
    let user_input = this.value;
    // 创建script标签,发送jsonp请求
    const script = document.createElement('script');
    // 向script标签中添加url
    script.src = "http://localhost:9000/jsonp";
    // 将创建好的script标签加到文档对象模型中
    document.body.appendChild(script);

服务器端

// 测试jsonp服务
app.all('/jsonp',(request,response) => {
    const data = {
        id: 1,
        msg: '该用户名已存在'
    };
    const str = JSON.stringify(data);
    response.send(`handle(${str})`);
})
相关文章
|
JSON 前端开发 JavaScript
AJAX(GET POST请求、 jQuery axios 发送请求、跨域--cors、请求超时、网络异常、放弃请求、重复发送请求)(三)
AJAX(GET POST请求、 jQuery axios 发送请求、跨域--cors、请求超时、网络异常、放弃请求、重复发送请求)(三)
|
5月前
|
前端开发 JavaScript API
js【详解】ajax (含XMLHttpRequest、 同源策略、跨域、JSONP)
js【详解】ajax (含XMLHttpRequest、 同源策略、跨域、JSONP)
57 0
|
6月前
|
前端开发 JavaScript 安全
详尽分享突破ajax不能跨域的限制
详尽分享突破ajax不能跨域的限制
38 0
|
7月前
|
移动开发 前端开发 安全
Ajax跨域的所有方法(最详细带使用教程!!!)
Ajax跨域的所有方法(最详细带使用教程!!!)
|
7月前
|
JSON 前端开发 安全
浏览器跨域限制:为什么浏览器不能跨域发送Ajax请求?
浏览器跨域限制:为什么浏览器不能跨域发送Ajax请求?
108 0
|
缓存 JSON 前端开发
Ajax:跨域与JSONP
Ajax:跨域与JSONP
84 1
|
缓存 JSON 前端开发
AJAX(GET POST请求、 jQuery axios 发送请求、跨域--cors、请求超时、网络异常、放弃请求、重复发送请求)(二)
AJAX(GET POST请求、 jQuery axios 发送请求、跨域--cors、请求超时、网络异常、放弃请求、重复发送请求)(二)
|
XML 数据采集 Web App开发
AJAX(GET POST请求、 jQuery axios 发送请求、跨域--cors、请求超时、网络异常、放弃请求、重复发送请求)(一)
AJAX(GET POST请求、 jQuery axios 发送请求、跨域--cors、请求超时、网络异常、放弃请求、重复发送请求)
|
前端开发 API PHP
漏刻有时开放平台数据接口php允许ajax跨域的解决方案
漏刻有时开放平台数据接口php允许ajax跨域的解决方案
57 0