原生的js实现jsonp的跨域封装

一、原理

jsonp是利用浏览器请求script文件时不受同源策略的限制而实现的,伪造一个script标签,将请求数据的url赋值给script的src属性,并将该标签添加到html中,浏览器会自动发送请求,返回的一般时一段js代码,即函数的调用代码

该种跨域的请求方式需要后台配合返回响应的函数执行数据

二、封装代码

function jsonp (url, data, callback) {
    let scriptTag = document.createElement(‘script‘)
    let params = ‘‘
    for (key in data) {
        params += key + ‘=‘ + data[key] + ‘&‘
    }
    params.length === 0 ? scriptTag.src = url + ‘?‘ + ‘fn=‘ + callback : scriptTag.src = url + ‘?‘ + params + ‘fn=‘ +callback
    document.querySelector(‘head‘).appendChild(scriptTag)
}
function myCallback(){
    alert(‘success‘)
}
jsonp (‘123‘, {name:‘lhy‘}, ‘myCallback‘)

这里需要后台返回的参数名为fn

原文地址:https://www.cnblogs.com/lhyhappy365/p/10159294.html

时间: 2024-08-07 16:29:43

原生的js实现jsonp的跨域封装的相关文章

JS跨域:jsonp、跨域资源共享、iframe+window.name

JS跨域:jsonp.跨域资源共享.iframe+window.name :https://www.cnblogs.com/doudoublog/p/8652213.html JS中的跨域 请求跨域有好多种, 一.跨域资源共享: 也就是设置服务端的header,可以指定哪些域名可以请求,也是最简单的跨域方式(自我感觉),并且可以支持post等等. //指定允许其他域名访问 'Access-Control-Allow-Origin:*'//或指定域 //响应类型 'Access-Control-A

JSONP实现跨域

利用JSONP实现跨域请求 前言:有时候一忙起来就没了时间观念,原来我已经有十多天没写博客了.一直想做跨域方面的尝试,无奈最近准备校招没时间动动手.今天就先讲讲JSONP吧,昨晚还在研究QQ空间日志里面网络图片的问题呢,我发现日志还提供了HTML模式,我们可以利用img标签的src属性实现跨域请求,从自己的服务器里提取动态内容. JSONP 在讲实现之前,我们先来看看何为JSONP.以下是维基百科的解释: JSONP or "JSON with padding" is a commun

跨域 - 自定义 jsonp实现跨域

问题:在现代浏览器中默认是不允许跨域. 办法:通过jsonp实现跨域 在js中,我们直接用XMLHttpRequest请求不同域上的数据时,是不可以的.但是,在页面上引入不同域上的js脚本文件却是可以的,jsonp正是利用这个特性来实现的. 有两个站点: 1.要获取数据的站点:http://localhost:1326/Default.aspx 1.1页获取页面的json数据 2.要显示获取结果的站点 数据源页面的源码 protectedvoid Page_Load(object sender,

PHP AJAX JSONP实现跨域请求使用实例

在之前我写过“php返回json数据简单实例”,“php返回json数据中文显示的问题”和“在PHP语言中使用JSON和将json还原成数组”.有兴趣的童鞋可以看看 今天我写的是PHP AJAX JSONP使用的实例.不清楚jsonp是什么的请自己搜索 实例1 test.html <!doctype html> <html> <head> <meta charset="utf-8"> <title>test</title

jsonp实现跨域访问

要实现JSONP跨域访问,首先就要了解什么是跨域?然后JSONP与JSON的关系? 1.什么是跨域? 跨域简单的说就是一个域名下的程序和另一个域名下的程序做数据交互.比如说:现有一个http://www.zq.com和http://www.qt.com两个独立的网站,要实现从后一个网站向前一个网站中取数据.把做为数据来源的当作服务端,把去获取数据的当作客户端,实现面向服务的编程. 在动态网页当中,最重要的一项就是取数据.如果是在同一个项目中,将网站挂在同一个域名下,这种情况下无论是前台Ajax还

使用XHR2或Jsonp实现跨域以及实现原理

我们直接使用XMLHttpRequset请求外部接口 会发现 报这个错误 其实浏览器成功发送请求并拿回了数据  只是浏览器的同源策略 禁止了获取  在xhr2 服务器端支持跨域 需要在响应头增加 Access-Control-Allow-Origin: * //*代表任何域.也可以指定地址 Access-Control-Allow-Methods: POST,GET //支持的方法 同源策略 同源策略主要针对XMLHttpRequset   保证请求url 必须跟当前站点的协议 域名 端口 一致

跨域解决方案二:使用JSONP实现跨域

跨域的实现方式有多种,除了 上篇文章 提到的CORS外,常见的还有JSONP.HTML5.Flash.iframe.xhr2等. 这篇文章对JSONP的跨域原理进行了探索,并将我的心得记录在这里和大家分享. JSONP跨域原理探秘 我们知道,使用 XMLHTTPRequest 对象发送HTTP请求时,会遇到 同源策略 问题,域不同请求会被浏览器拦截. 那么是否有方法能绕过 XMLHTTPRequest 对象进行HTTP跨域请求呢? 换句话说,不使用 XMLHTTPRequest 对象是否可以发送

使用 JSONP 实现跨域通信

简介 Asynchronous JavaScript and XML (Ajax) 是驱动新一代 Web 站点(流行术语为 Web 2.0 站点)的关键技术.Ajax 允许在不干扰 Web 应用程序的显示和行为的情况下在后台进行数据检索.使用 XMLHttpRequest 函数获取数据,它是一种 API,允许客户端 JavaScript 通过 HTTP 连接到远程服务器.Ajax 也是许多 mashup 的驱动力,它可将来自多个地方的内容集成为单一 Web 应用程序. 不过,由于受到浏览器的限制

使用jsonp进行跨域访问

一.使用场景 当我们请求非本服务器的资源的时候,浏览器会禁止访问,并提示不允许跨域访问.此时我们可以使用jsonp这种请求方式,从其他服务器获取资源.在客户端调用提供jsonp支持的接口,获取jsonp格式的数据. 二.客户端的实现 客户端使用jsp,用js发送ajax请求,代码如下: <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%