首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

jsonp跨域实例 js

JSONP(JSON with Padding)是一种跨域数据交互的解决方案,它利用了网页上<script>标签可以跨域加载资源的特性。JSONP请求实际上是动态插入一个<script>标签,通过指定其src属性来加载一个跨域的JavaScript文件,这个文件包含一个回调函数,该回调函数的参数就是服务器返回的数据。

基础概念

  • 同源策略:浏览器出于安全考虑,限制从一个源加载的文档或脚本如何与来自另一个源的资源进行交互。
  • 跨域:当协议、域名或端口至少有一个不同,就认为是跨域。
  • JSONP:通过<script>标签加载一个跨域的JavaScript文件,该文件执行一个预先定义好的回调函数,并将数据作为参数传递给这个回调函数。

优势

  • 兼容性好,支持老的浏览器。
  • 实现简单,易于使用。

类型

  • 普通JSONP:服务器返回一个函数调用,函数名由客户端指定。
  • CORS JSONP:结合了CORS(跨源资源共享)和JSONP的优点,但本质上还是JSONP。

应用场景

  • 获取跨域的公开数据,如天气预报、新闻等。
  • 在一些老的系统或浏览器中实现跨域数据交互。

示例代码

客户端代码:

代码语言:txt
复制
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>JSONP Example</title>
<script>
function handleResponse(data) {
console.log('跨域数据:', data);
}
</script>
<script src="http://example.com/data?callback=handleResponse"></script>
</head>
<body>
</body>
</html>

服务器端代码(Node.js示例):

代码语言:txt
复制
const http = require('http');
http.createServer((req, res) => {
const callback = req.url.split('=')[1];
const data = { message: 'Hello, JSONP!' };
res.end(`${callback}(${JSON.stringify(data)})`);
}).listen(80, 'example.com');

遇到的问题及解决方法

  • 安全性问题:JSONP容易受到XSS攻击,因为它允许跨域执行脚本。解决方法是使用CORS或者通过服务器代理来避免直接使用JSONP。
  • 只支持GET请求:JSONP只能用于GET请求。如果需要POST或其他类型的HTTP请求,可以使用CORS或者服务器代理。
  • 回调函数冲突:如果多个JSONP请求使用相同的回调函数名,可能会导致冲突。解决方法是动态生成回调函数名。

注意事项

  • JSONP是一种老旧的技术,现在更推荐使用CORS来实现跨域请求,因为CORS更加安全和灵活。
  • 使用JSONP时,应确保请求的服务器是可信的,以避免潜在的安全风险。

随着技术的发展,现代浏览器普遍支持CORS,因此在新的项目中,推荐使用CORS来实现跨域请求。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 详析JSONP跨域

    JSONP的详析流程: 1 什么是JSONP 2 JSONP的原理与实现流程 2.1 JSONP跨域流程 2.2 相关提示 3 JSONP的实例 - 辅助理解JSONP流程 3.1 JSONP跨域实例...- 前端的JS代码 3.2 JSONP跨域实例 - 后台的PHP代码 3.3 代码的注意事项 4 利用JSONP实现百度搜索的关键词获取 4.1 功能需求与效果 4.2 提供的接口(API)说明 4.3...接口返回示例 4.4 实例开发 5 JSONP跨域的优劣势 5.1 JSONP跨域的优点 5.2 JSONP跨域的缺点 5.3 注意事项 1 什么是JSONP JSONP,是解决跨域的一种解决方案,在这种解决方式当中通过...JSONP跨域实例 - 前端的JS代码 // 对应于第一步 var newScript = document.createElement('script'); // 对应于第二步和第三步,第三步为?...注意事项 JSONP既能够解决子域的跨域问题,也能够解决不同域的跨域问题。但是不能够在A域中使用JSONP的方式访问B域中的JS文件(请不要陷入这个误区) HTML5学堂 小编-利利&堡堡 耗时10h

    1.9K91

    跨域jsonp的原理

    在学习jsonp之前首先要明白以下几点: 首先确定为什么要用jsonp,因为要跨域请求数据,那为什么会发生跨域呢, 因为浏览器的同源策略,那什么是同源策略呢浏览器从A网站向B网站请求资源,必须同时满足三点才可以...,协议相同,域名相同,端口相同,任何一点不同都会产生跨域,产生跨域后,浏览器就会阻止数据返回。...人们为了满足在不同的域名间传递数据,发明了jsonp技术: 在学习jsonp之前,大家可以思考一下,一张网页中哪些标签是可以跨域请求资源的,我们知道,在页面上有三种资源是可以与页面本身不同源的。...标签可以链接到不同源的js脚本,来到达跨域目的。...这样就完成了跨域数据交换。jsonp的含义是:json with padding,而在json数据外包裹它的那个函数; 附上封装的jsop的代码: ?

    1.3K40

    jsonp跨域原理解析

    背景: 由于浏览器同源策略的限制,非同源下的请求,都会产生跨域问题,jsonp即是为了解决这个问题出现的一种简便解决方案。 同源策略即:同一协议,同一域名,同一端口号。...(域名不同) 突破同源策略限制: 现在知道了同源策略,那我们就来看下jsonp是如何突破同源策略的限制实现跨域的 首先,不知道大家有没有注意,不管是我们的script标签的src还是img标签的src,...说到这里jsonp的实现原理就浮出水面了。 jsonp就是使用同源策略这一“漏洞”,实现的跨域请求(这也是jsonp跨域只能用get请求的原因所在)。...ok,知道这两点之后,我们开始具体使用jsonp进行跨域请求。...如下: 这样下来,就完成了实现jsonp的跨域。 总结: 需要注意的是,callback参数定义的方法是需要前后端定义好的,具体什么名字,商讨好就可以了。

    54330

    AJAX跨域请求JSONP 原

    JSONP(JSON with Padding)是一个非官方的协议,它允许在服务器端集成Script tags返回至客户端,通过javascript callback的形式实现跨域访问(这仅仅是JSONP...由于同源策略的限制,XmlHttpRequest只允许请求当前源(域名、协议、端口)的资源,为了实现跨域请求,可以通过script标签实现跨域请求,然后在服务端输出JSON数据并执行回调函数,从而解决了跨域的数据请求...3、如何使用JSONP? 下边这一DEMO实际上是JSONP的简单表现形式,在客户端声明回调函数之后,客户端通过script标签向服务器跨域请求数据,然后服务端返回相应的数据并动态执行回调函数。...> 一、原生js实现方法  JSONP 实例 <div id

    91720

    JSONP、CORS解决跨域问题

    一、为什么会有跨域问题? 是因为浏览器的同源策略是对ajax请求进行阻拦了,但是不是所有的请求都给做跨域,对href属性都不拦截。...二、解决跨域问题的两种方式 JSONP CORS 三、JSONP 先简单来说一下JSONP,具体详细详见上面JSONP JSONP是json用来跨域的一个东西。...原理是通过script标签的跨域特性来绕过同源策略。(创建一个回调函数,然后在远程服务上调用这个函数并且将json数据形式作为参数传递,完成回调)。...四、CORS跨域 随着技术的发展,现在的浏览器可以主动支持设置从而允许跨域请求,即:跨域资源共享(CORS,Cross-Origin Resource Sharing),其本质是设置响应头,使得浏览器允许跨域请求...cookie 在跨域请求中,默认情况下,HTTP Authentication信息,Cookie头以及用户的SSL证书无论在预检请求中或是在实际请求都是不会被发送。

    1.6K20

    JsonP------实现跨域请求

    JsonP技术 介绍 JsonP 跨域 同源策略 非同源限制以下行为 常见的跨域场景 跨域的解决方案 JsonP的优缺点 Json的使用 搭建应用场景 JsonP实现手动跨域 jsonDemo1的...为什么我们从不同的域(网站)访问数据需要一个特殊的技术(JSONP )呢?这是因为同源策略。 跨域 跨域是指一个域(网站)下的文档或脚本试图去请求另一个域(网站)下的资源。 ?...,子域不同 不允许 http://www.domain1.com/a.js http://www.domain2.com/b.js 不同域名 不允许 跨域的解决方案 1) 通过 jsonp 跨域...跨域 6) 跨域资源共享(CORS) 7) nginx 代理跨域 8) nodejs 中间件代理跨域 9) WebSocket 协议跨域 JsonP的优缺点 JSONP 的优点是:它不像...实现手动跨域 手动实现跨域的要求 1. ajax的请求方式必须是get 2. ajax的dataType必须是jsonp 3.

    1.2K10

    jsonp跨域实现的几种方式

    使用jquery.ajax的jsonp方法可以异域调用到百度的js并拿到返回值,当然$.getScript也可以实现跨域调用js。...jsonp快速入门: 【原创】说说JSON和JSONP,也许你会豁然开朗,含jQuery用例 关于jquery.ajax的jsonp方法是用以及其error回调函数不能正确执行,请参考园长dudu...的文章: jquery ajax中使用jsonp的限制 jQuery插件jQuery-JSONP使用注意 其他有关jsonp的文章: 利用iframe实现ajax 跨域通信的解决方案...请求地址和参数都知道了,于是写下如下js测试是否可以拿到关键字提示(源码里的test.html页面): var qsData = { 'wd': ‘a’, 'p': '3', 'cb': 'getData...(autoComplete.js 源码里有更详细的注释): var timeoutId; //延迟请求服务器 var highlightindex = -1; //高亮标记 $(function

    3.4K20
    领券