跨域访问(JSONP)

简介: 跨域访问(JSONP)

跨域访问

同源策略(互联网默认原则)

同源政策的目的,是为了保证用户信息的安全,防止恶意的网站窃取数据。随着互联网的发展,“同源政策”越来越严格。


所谓“同源”指的是“三个相同”:协议相同、域名相同以及端口相同。


域名是什么?

域名又称为网域,是由一串用点分隔的名字组成的Internet上某一台计算机或计算机组的名称,用于 在数据传输时标识计算机的电子方位(有时也指地理位置)。


跨域

描述:当一个资源从与该资源本身所在的服务器不同的域或端口请求一个 资源时,资源会发起一个跨域 HTTP请求。出于安全原因,浏览器限制从脚本内发起的跨源HTTP请求。


常见的跨域分为以下两种:


完全跨域:就是指一个顶级域名方向另一个顶级域名。

跨子域:相同顶级域名下的两个子级域名相互通信。

常见的跨域访问

HTML页面中一些允许指定路径的元素具有跨域特性:

<link>元素

<script>元素

<img>元素

<iframe>元素

常见的跨域访问示例代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>常见跨域访问</title>
    <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css" rel="stylesheet">
</head>
<body>
<img src="https://ss2.bdstatic.com/70cFvnSh_Q1YnxGkpoWK1HF6hhy/it/u=3238475290,1513931108&fm=26&gp=0.jpg">
<script>
    console.log($);
</script>
</body>
</html>

JSONP

概述

JSONP是JSON的一种“使用模式“,可以用来解决主流浏览器的跨域数据访问的问题。


利用<script>元素的这个开放策略,网页可以得到从其他来源动态产生的JSON资料,而这种使用模式就是所谓的JSONP。


<script>元素实现跨域访问

网页通过添加一个<script>元素,向服务器请求JSON数据,这种做法不受同源政策限制;服务器收到请求后,将数据放在一个指定名字的回调函数里传出来。


示例代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>script元素实现JSONP跨域</title>
</head>
<body>
<!--
    通过<script>元素实现JSONP跨域访问
    * 利用<script>元素的src属性指定服务器端地址
    * 同时将指定的回调函数名称发送指定服务器
-->
<script>
    // 定义发送服务器端的回调函数 - 利用参数方式进行接收
    function fn(data) {
        console.log(data);
    }
</script>
<script src="http://127.0.0.1:3000?callback=fn"></script>
</body>
</html>

解析图如下:

效果图如下:

$.getJSON()方法

jQuery 中的$.getJSON()方法允许通过使用JSON形式的回调函数来嘉爱其他网络的JSON数据。

语法格式如下:

$.getJSON("http://127.0.0.1:3000?callback=?",function(data){
   console.log(data); 
});

$.getJSON()方法的第一个参数表示url,需要在该参数后面添加“callback?”。jQuery将“?”自动替换为正确的函数名,以执行回调函数。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>getJSON实现跨域访问</title>
    <script src="jquery-1.12.4.js"></script>
</head>
<body>
<script>
    $.getJSON("http://127.0.0.1:3000?callback=?",function(data){
        console.log(data)
    });
</script>
</body>
</html>
相关实践学习
基于函数计算快速搭建Hexo博客系统
本场景介绍如何使用阿里云函数计算服务命令行工具快速搭建一个Hexo博客。
目录
相关文章
|
6月前
Ajax-jsonp跨域
Ajax-jsonp跨域
|
8月前
|
缓存 JSON 前端开发
Ajax:跨域与JSONP
Ajax:跨域与JSONP
42 1
|
11月前
|
JSON JavaScript 前端开发
jsonp解决Ajax跨域问题
jsonp解决Ajax跨域问题
81 0
|
前端开发
利用jsonp解决跨域问题
这篇文章给大家分享的是利用jsonp解决跨域问题。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
75 0
|
JSON 缓存 JavaScript
同源策略与跨域访问(jsonp和cors等)
同源策略与跨域访问(jsonp和cors等)
265 0
同源策略与跨域访问(jsonp和cors等)
|
JSON 缓存 JavaScript
JSONP - 跨域篇
JSONP - 跨域篇
206 0
JSONP - 跨域篇
|
JSON JavaScript 前端开发
学习AJAX必知必会(5)~同源策略、解决跨域问题(JSONP、CORS)
学习AJAX必知必会(5)~同源策略、解决跨域问题(JSONP、CORS)
224 0
学习AJAX必知必会(5)~同源策略、解决跨域问题(JSONP、CORS)
Ajax-21:设置CORS响应头实现跨域
Ajax-21:设置CORS响应头实现跨域
186 0
|
Web App开发 前端开发 JavaScript
|
JSON JavaScript 数据格式
jsonp和cors实现跨域
jsonp实现的原理主要是利用src属性可以去加载跨域的资源,例如script、img。 动态的创建script标签,加载跨域资源
1153 0

相关课程

更多