JSONP跨域问题演示

01实战:如何用 cors 和 jsonp 来解决异步跨域的问题(实际例子演示解决问题) Vue 之 ajax 的跨域问题 阅读详情

跨域是什么?

首先说下同源,同源策略是浏览器的一种安全策略,所谓同源是指,域名,协议,端口完全相同。而跨域就是不同源 !

能够进行跨域的请求

一般a,img,link[rel=stylesheet],video,audio,等等能够发出请求的标签都可以实现跨域访问。但是这些标签不能得到返回的东西,所以一般不会用他们来请求资源。

常见的跨域处理方案

由于ajax先天设计的时候,不能实现跨域访问。所以就出现了处理跨域这样的问题。
① jsonp来处理跨域,下面用jquery来实现,关键代码如下:

$.ajax({
  type : "GET",
  url : "http://www.a.com/index.php?message=msg&callback=?",
  dataType : "jsonp",
  jsonp: 'callback',
  success : function(json){
      console.log(json.msg);
  }
});

② 服务端设置 Access-Control-Allow-Origin
我们使用nodejs来完成这一问题。服务端代码如下:

"use strict"
const http = require('http');
const server = http.createServer();

server.on('request',(req,res)=>{
    res.writeHead(200,{"Content-Type":"text/plain","Access-Control-Allow-Origin":"*"});
    res.write('ajax cross domain');
    res.end();
})

server.listen(3000,(err)=>{
  if(err){
    return console.log(err.message);
  }
  console.log('server is on');
})

浏览器端代码如下:

window.onload = function(){
  var xhr = new XMLHttpRequest();
  xhr.open("post","http://localhost:3000/");
  xhr.onreadystatechange=function(){
    if(xhr.readyState==4){
        if(xhr.status==200){
          console.log(xhr.responseText);
        }
    }
  }
  xhr.send(null);
}

使用http的形式访问客户端网页,那么就会输出不同源下返回的数据。
③ 其他跨域策略 iframe, window.postMessage(), window.name(较好的解决方案,值得推荐)等
详见: http://rickgray.me/2015/09/03/solutions-to-cross-domain-in-browser.html

④ 使用豆瓣的api,简单封装一个跨域请求函数:

<script>
    /* 封装数据  跨域url  params fn */
    function crossDomain(url,params,fn){
        var head = document.getElementsByTagName('head')[0];
        // 1. 处理回调函数
        var cbName = 'jsonp'+ (Math.random() * Math.random()).toString().substr(2) + new Date().getTime();
        /* 将回调函数挂载到window对象上 */
        window[cbName] = function(data){
            // 拿到并处理数据
            fn(data);
            // 拿到数据后remove掉
            //head.removeChild(scriptObj);
        }
        // 2. 解析url
        var qstring = '';
        for(var key in params){
            qstring += key + '=' + params['key'] + '&';
        }
        qstring += 'callback=' + cbName;
        url += '?' + qstring;
        // 3. 插入script
        var scriptObj = document.createElement('script');
        scriptObj.src = url;
        head.appendChild(scriptObj);
    }
</script>

<script>
    /*  使用  */
    crossDomain('http://api.douban.com/v2/movie/in_theaters',{},function(data){
        console.log(data);
    })
</script>

⑤ 使用grunt 或 gulp等构建工具进行请求转发,此处省略

解决vue net :ERR_CONNECTION_REFUSED报错问题 我是因为频繁的更换网络,导致这样的。 然后我回忆了一下。之前每次改ip都会把Package.json 中的 –host 0.0.0.0改成我的固定ip,由于改来改去太麻烦了,我就设置为0.0.0.0 所以喜提上图的一排get请求 “dev”: “webpack-dev-server –inline –progress –config build/webpack.dev.conf.js –host 0.0.0.0”, 解决办法 把 –host 0.0.0.0 改成你的固定ip 补充知识:Vue不能检测数组下标赋值、长度变化、对象属性动态添加和删除的原因和解决办法 解决方法: 1、方案一 立即下载

相关推荐

门信号表达式_毫米波FMCW体制雷达的信号处理中的FFT等效为相干积累的解释

民用的77G或24G毫米波雷达目前普遍采用发射波形为一连串线性调频连续波(即所谓chirp信号,啁啾信号,线性调频波如果能够下变频到人耳可接收的频段,听起来很类似“啁啾”“啁啾”的鸟叫声)。一串前后相继的chirp信号与一段长时间的“空闲”组成一帧信号(比如汽车雷达整机厂普遍采用一帧为50ms)。用频谱仪观察chirp信号串,横坐标为时间,纵坐标为频率,如下图所示(此处引用TI产品手册...

weixin_39725756的博客 1949

面试突击81:什么是跨域问题?如何解决?

跨域问题的本质是浏览器为了保证用户的一种安全拦截机制,想要解决跨域问题,只需要告诉浏览器“我是自己人,不要拦我”就行。它的常见实现方式有 5 种:通过注解实现局部跨域、通过配置文件实现全局跨域、通过 CorsFilter 对象实现全局跨域、通过 Response 对象实现局部跨域,通过 ResponseBodyAdvice 实现全局跨域。

m0_56069948的博客 3534

Matlab实战:用卡尔曼滤波搞定无人机GPS轨迹优化(附完整代码)

本文详细介绍了如何使用Matlab实现卡尔曼滤波(KF)算法优化无人机GPS轨迹,提供完整代码和工程实践指南。通过线性卡尔曼滤波技术,有效降低定位噪声,提升轨迹平滑度,适用于无人机导航和控制系统开发。

weixin_29061425的博客 253

通过实例理解Web应用跨域问题

在开发Web应用的过程中,我们经常会遇到所谓“跨域问题(Cross Origin Problem)”。跨域问题是由于浏览器的同源策略(Same-origin policy)[1]导致的,它限制了不同源(Origin:域名、协议或端口)之间的资源交互。在这篇文章中,我将通过一些具体的示例来把跨域问题以及主流解决方法说清楚,供大家参考。1. 什么是跨域问题跨域问题指的是当一个Web应用程序在访问另一个...

TonyBai 459

保姆级教程:用高云GW2A开发板搭建RISC-V软核处理器(含DDR3内存优化配置)

本文提供了一份详细的保姆级教程,指导开发者使用高云GW2A-LV18PG256C8 FPGA开发板搭建RISC-V软核处理器系统。教程涵盖了从开发环境搭建、PicoRV32软核集成,到关键的DDR3内存控制器配置与优化,并深入讲解了时序约束与系统调试方法,帮助初学者和爱好者实现从逻辑设计到软硬件协同的深度实践。

2a4s6d8f0g的博客 570

游戏开发-GM系统的设计

游戏管理员(gm)作为游戏中拥有更高权限的账号,在游戏开发的过程中,我们需要很早的将gm系统做出来,作为测试游戏逻辑具有不可替代的作用。 内容目录 服务端与客户端通讯基本流程 gm命令格式设计 gm系统的实现 服务端与客户端通讯基本流程 服务端与客户端通信,如果基本的网络框架搭建完成,那么我们只需要写好命令就可以了 服务器完成一条命令的添加需要3个过程。 (1)命令格式的定义

微不足道 4617

跨域问题详解及解决方案

随着 Web 技术的不断发展,前后端分离的开发模式逐渐成为主流。在这种模式下,前端和后端分别独立开发,前端与后端通信的方式多为使用 Ajax 发送 HTTP 请求。然而,由于浏览器的安全策略限制,可能会出现跨域问题,导致请求失败。什么是跨域问题?为什么会出现跨域问题?什么情况下会出现跨域?如何解决跨域问题?代码示例跨域问题指的是在 Web 应用程序中,由于同源策略的限制,导致浏览器无法发送跨域请求,也无法获取跨域响应的问题。

无简介 8829

手把手搭建摄像头驱动(一):I2C设备树插件与OV5640实战

本文手把手指导如何搭建OV5640摄像头驱动,重点讲解I2C设备树插件的编写与实战应用。通过硬件连接验证、I2C驱动框架搭建、设备树插件编译及动态加载调试,系统介绍Linux驱动开发全流程,并提供常见问题解决方案,帮助开发者快速掌握摄像头驱动开发技术。

git9versioner的博客 755

关于 CORS、跨域、案例演示

关于跨域 和 CORS CORS 主要用于解决跨域问题。 跨域就是浏览器的浏览器的同源策略(协议+域名+端口)。 网上有太多的总结介绍文章,例如: 阮一峰老师的 跨域资源共享 CORS 详解 MDN 的 浏览器的同源策略 MDN 的 跨源资源共享(CORS) 跨域解决方案 现在常用的跨域解决方案主要有两个: 代理 Proxy 开发环境需要前端自己配置 web 服务器 生产环境如果不同源,需要运维人员配置 CORS 缺点:低版本浏览器不支持 跨源资源共享(CORS) 最下面有介绍,

皮蛋很白的博客 1715

【数据集】1980-2020年(5年)土地利用分类数据-中国科学院

简介1980-2020年每五年土地利用数据-中国科学院

WW、forever的博客 3935

使用GitLab限制开发者使用CI/CD的权限,三种方案

使用三种方案来限制开发人员的CI/CD权限。

知无涯 5099

跨域资源共享错误和net::ERR_CONNECTION_REFUSED

跨域资源共享错误 net::ERR_CONNECTION_REFUSED

Spark1849的博客 3087

图像做旧算法原理及代码解释

该图像做旧算法主要通过一系列的图像处理操作来模拟旧照片的效果。整体流程包括:首先对输入图像进行颜色调整,降低饱和度并增加黄色调以营造出旧照片的色彩风格;接着添加高斯噪声来模拟旧照片可能存在的颗粒感;最后通过在图像上随机绘制线条来模拟旧照片的划痕和瑕疵。综上所述,该图像做旧算法通过对颜色的调整(包括饱和度降低、色相偏移)、添加高斯噪声以及模拟划痕和瑕疵等一系列操作,从多个方面模拟了旧照片的特征。

m0_44975814的博客 902

Jsonp解决ajax跨域问题

一、介绍 最近跨域问题比较多,而且自己刚好也看到这一块,就总结了一下,关于JSONP的东西百度的话东西确实很多,很多人都是复制别人的,如此下去,其实找的资料就那么几份,关键是我还看不懂,可能是能力问题吧,自己经过很多尝试,所以总结了一下,终究还是弄懂了皮毛。注意一点是,这里是用Jsonp解决ajax的跨域问题,具体的实现其实不是ajax。 1、同源策略浏览器有一个很重要的概念——同源策略(Sam

Saytime 4万+

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

关于前端跨域问题(本文讲解jsonp)

关于前端跨域问题 PS:最近在写项目的时候遇到了需要跨域请求数据,所以本文记录一下 那么好咱们首先来了解下什么情况下称之为跨域 规则: [协议]://[ip地址]:[端口]/[path路径]?[请求参数] 荔枝: http://127.0.0.1:3000/?userName=小黑&&callback=func 那么好现在我们知道了 请求地址每个参数的名字 , 那么到底什么是跨域呢? 就比如说: 只要是 协议, ip, 端口 这三个其中有一个不一样, 那么都可称之为跨域请求,

yjy_191的博客 243

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

关于web跨域问题的总结

什么是跨域 跨域是由浏览器同源策略引起的,是指页面请求的接口地址,必须与页面url地址处于同域上(即域名,端口,协议相同)。这是为了防止某域名下的接口被其他域名下的网页非法调用,是浏览器对JavaScript施加的安全限制。同源策略是浏览器最核心也最基本的安全功能,Web是构建在同源策略基础之上的,浏览器是针对同源策略的一种实现。 同源策略的三个评判指标: 协议 域名 端口号‘ 下表给出了...

CanMoHaiYan的博客 3316

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

使用 JSONP 实现跨域(速通)

两分钟,使用 JSONP 实现跨域。

高大志leo的博客 4063

RPC跨域问题

理解 ajax 的跨域访问 服务器段,使用 CORSFilter 过滤器解决跨域问题 前端使用 JSONP 解决跨域问题 Ajax 跨域介绍 Ajax 跨域问题 建立 ajax-origin 项目 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.or...

SnowMultiflora的博客 1241

解决跨域问题,聊聊JSONP

概述: 跨域这个问题在工作偶尔能够碰到,但是一旦跨域传送数据就成了问题,所以就用到了JSONP,今天我们来聊聊JSONP。 什么是JSONP: JSONP是一种为了解决跨域的数据交换问题,从而衍生出来的数据交换协议。 为什么会产生JSONP: 因为浏览器的“同源策略“,也就是浏览器限制脚本程序只能和同协议、同域名、同端口的脚本进行交互,但是在数据交换的过程中,经常会产生跨域的数据交换...

zwbHUST的博客 259

python解决跨域问题_python 关于跨域问题

测试跨域问题:1、编写一个view(jsonp)跳转到模板2、模板使用ajax请求一个地址(do_jsonp)3、编写一个view(do_jsonp)返回json串4、测试,如果是同源下进行ajax请求可以获取数据,如果把请求的域名改成localhost那么就会出现一个错误,不能访问其他域名下的数据的错误解决方案:1、使用jsonp解决就是通过客户端js动态创建一个script标签,里面编写一个s...

weixin_39879665的博客 1078

jsonp理解与代码演示

jsonp理解与代码演示什么叫跨域为什么会有跨域怎么解决跨域图片演示 演示代码链接 https://gitee.com/shishuaichao/practice/tree/master/jsonp 什么叫跨域 主域名不同 子域名不同 端口不同 协议类型不同 都可以称为两个不同的域 从一个域中想要访问另一个域中的资源文件,就会形成跨域 为什么会有跨域 跨域是浏览器的一种保护策略,叫同源策略 ...

sh_rimp的博客 144

AJAX封装+跨域(jsonp)

AJAX的调用还十分麻烦,步骤比较繁琐,在日常开发一般会将其进行封装,所以接下来封装下AJAX功能相关步骤函数,以后使用直接调用即可,同时大大提高了开发效率。 为了使用方便,接下来封装AJAX的get和post 封装:基本模板与传参 此时调用模板时,如下所示 封装1:建立异步对象 封装2:判断请求类型 get请求类型传值方式是将数据拼接到路由后进行传值,所以接下来需要判断是否传值(对比po...

weixin_45492145的博客 454

跨域请求,jsonp封装

出于浏览器的同源策略限制。同源策略(Sameoriginpolicy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。可以说Web是构建在同源策略基础之上的,浏览器只是针对同源策略的一种实现。同源策略会阻止一个域的javascript脚本和另外一个域的内容进行交互。(同源策略主要针对域名host,端口号part)通俗来讲,因为安全原因 服务器...

漫漫漫漫的博客 303

解决ajax跨域问题-深入浅出JSONP

问题描述:Ajax怎么无法获取另一个网站的最新消息呢,这就是引起为何取不到数据的原因了,那如何才能解决跨域的问题呢? 这是因为所有支持Javascript的浏览器都会使用同源策略这个安全策略。看看百度的解释: 同源策略,它是由Netscape提出的一个著名的安全策略。现在所有支持JavaScript 的浏览器都会使用这个策略。所谓同源是指,域名,协议,端口相同。当一个浏览器的两个tab页中分别打开...

布道 1235

JavaScript中的跨域问题

  跨域问题其实很普遍的存在的,如何解决跨域问题呢,跨域问题到底是怎么产生的,解决方法的由来又是什么?我觉得看了视频讲解,值得写下来,记录下来。 一、跨域问题是怎么产生? 概念:只要协议、域名、端口有任何一个不同,都被当作是不同的域。 浏览器对ajax请求的限制,不允许跨域请求资源。 http://www.a.com→http://www.b.com是跨域 http://w...

weixin_30338481的博客 118

Jsonp解决Ajax跨域问题

一、介绍 最近跨域问题比较多,而且自己刚好也看到这一块,就总结了一下,关于JSONP的东西百度的话东西确实很多,很多人都是复制别人的,如此下去,其实找的资料就那么几份,关键是我还看不懂,可能是能力问题吧,自己经过很多尝试,所以总结了一下,终究还是弄懂了皮毛。注意一点是,这里是用Jsonp解决ajax的跨域问题,具体的实现其实不是ajax。 1、同源策略 浏览器有一个很重要的概念—

泽宇的博客 9357
上一篇: angular中的路由简单使用
下一篇: 使用css3做0.5px的细线
Wang's Blog
博客等级 码龄12年 7434粉丝 2421原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wang's Blog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值