聊一聊JS的跨域

【CEF】CEF跨域,CEF跨域调用IFrame中的元素即在IFrame(跨域)中执行JS脚本 目的:在CEF中允许JS跨域访问,即使用JS代码调用主页面的IFrame中的元素 解决方案: 1.在构造函数初始化方法中加入BrowserSettings的设置 BrowserSettings.WebSecurity = CefState.Enabled; 此方案方便快捷,简单又易用,如果没什么特殊情况,这样做就很好 2.将JS由主页面注入到对应的IFrame中,再由js去处理IFra... 阅读详情
												       聊一聊JS的跨域

1.什么是跨域?

聊到跨域就不得不先聊一下浏览器的同源策略,为什么这么说呢,因为正是由于浏览器的同源策略才出现的跨域。同源策略,它是Netscape
提出的一个著名的安全策略。所谓同源是指,域名,协议,端口相同。当一个浏览器的两个tab页中分别打开两个不同的页面,在发送请求的
时候服务器首先会检查是否同源,如果非同源,那么在请求数据时,浏览器会在控制台中报一个异常,提示拒绝访问。因此出现跨域的情况
主要有以下几种:

(1)网络协议不同,如http协议、https协议。
(2)端口不同,如8080 、8089等端口。
(3)域名不同,如baidu.com、JD.com。
(4)子域名不同,如java.aaa.com、js.aaa.com。
(5)域名和域名对应ip,如www.aaa.com访问20.205.28.90.

2.常用的解决跨域请求资源的方法有如下几种:

(1)jsonp

定义和用法:通过动态的插入一个script标签,由于浏览器对script的资源引用没有同源限制,所以利用 script标签,加载src路径,实现跨域加载js文
件。该js文件中需要定义好一个方法,将该方法名传递给服务端,服务端根据该方法名,拼装一个方法调用语句,响应给浏览器。浏览器来执行该语句调用
方法,通过参数,将响应的数据取出即可。
缺点:只能使用get请求,不支持post请求。
     使用的是script标签,存在安全隐患。
     获取的数据格式一般为json格式。
实例:原生js方法
    
    <script>
        function onBack(data) {
            console.log(data.name); // 获取返回的结果
        }
    </script>
    <script>
        var _script = document.createElement('script');
        _script.type = "text/javascript";
        _script.src = "http://localhost:8080/jsonp?callback=onBack";
        document.head.appendChild(_script);
    </script>
    ajax方法:
    $.ajax({
                url:"./js/text.js",
                type:"GET",
                dataType:"jsonp",    
                jsonpCallback:"onBack",   
                success:function(data){
                    console.log(data)   
                },
                error:function(res){
                    console.log("请求失败!")
                }
            })

(2)CORS 【Cross-Origin Resource Sharing】

定义和用法:是现代浏览器支持跨域资源请求的一种最常用的方式。
使用方法:一般需要后端人员在处理请求数据的时候,添加允许跨域的相关操作。如下:

res.writeHead(200, {
"Content-Type": "text/html; charset=UTF-8",
"Access-Control-Allow-Origin":'http://localhost',
'Access-Control-Allow-Methods': 'GET, POST, OPTIONS',
'Access-Control-Allow-Headers': 'X-Requested-With, Content-Type'
}

(3)window.psotMessage

定义和用法:postMessage()方法允许来自不同源的脚本采用异步方式进行有限的通信,可以实现跨文本档、多窗口、跨域消息传递。
使用方法:postMessage(data,origin),该方法接受两个参数,data是指要传递的数据参数,origin是字符串参数,用来表明指定的目标源,包括协议+
主机+端口。
缺点:具有一定的兼容性

(4)document.domain跨子域

定义和用法:使用者前提是这两个域名必须属于同一个基础域名!而且所用的协议,端口都要一致,否则无法利用document.domain进行跨域,所以只能跨
子域
实现方法:​ 现在存在两个域名aaa.xxx.com和bbb.xxx.com。在aaa下嵌入bbb的页面,由于其document.name不一致,无法在aaa下操作bbb的js。可以在
aaa和bbb下通过js将document.name = 'xxx.com';设置一致,来达到互相访问的作用。
缺点:存在一定的限制,必须两个域名属于同一个基础域名。

(5)WebSocket

定义和用法:它是html5的一种api,可以在一个连接上提供全双工,双向通信。
实现方法:在JS创建了web socket之后,会有一个HTTP请求发送到浏览器以发起连接。取得服务器响应后,建立的连接会使用HTTP升级从HTTP协议交换为
web sockt协议。
缺点:仅限在支持web socket协议的服务器上工作。

var socket = new WebSockt('ws://www.baidu.com');
socket.send('hello WebSockt');
socket.onmessage = function(event){
 var data = event.data;
}

(6)proxy代理

定义和用法:proxy将请求发送给后台服务器,通过服务器来发送请求,然后将请求的结果返回到前端。
使用方法:通过nginx代理
postMessage实现Js、Javascript跨域通信 一、概要介绍 1、什么是跨域? 跨域是指从一个域名的网页去请求另一个域名的资源。比如从www.baidu.com 页面去请求 www.google.com 的资源。但是一般情况下不能这么做,它是由浏览器的同源策略造成的,是浏览器对JavaScript施加的安全限制。跨域的严格的定义是:只要 协议,域名,端口有任何一个的不同,就被当作是跨域。2、跨域通信的解决方法: (1)通过jsonp实现跨域... 阅读详情

相关推荐

Vue.js跨域请求配置、Node.js设置允许跨域

Vue跨域配置 在Vue项目目录中打开config/index.js,在proxyTable中添写如下代码: // 跨域处理 proxyTable: { '/api': { // 匹配所有以 '/api'开头的请求路径 target: 'http://localhost:4000', // 代理模板的基础路径 secure: true, // 如果是https接口,需要配置这个参数 changeOrigin: true, // 支持

IT界幼稚生的博客 792

js跨域的解决方案

指的是浏览器不能执行其他网站的脚本,简单来说是浏览器同源政策的限制,浏览器针对于的限制。两个页面拥有相同的协议,端口,域名就是同源,如果有一个不相同就是不同源。保护用户,防止一些网站盗取用户信息。 1、通过jsonp跨域 2、跨域资源共享(CORS) 3、document.domain + iframe跨域 4、location.hash + iframe 5、window.name + iframe跨域 6、postMessage跨域 7、nginx代理跨域 8、nodejs中间件代理跨域(非vue、v

muzidigbig的博客 1万+

开放平台 - 互动玩法演进之路

随着直播业务和用户规模日益壮大,如何丰富直播间内容、增强直播间内用户互动效果,提升营收数据变得更加关键。

bilibili_TC的博客 1739

js解决跨域的方案

什么是跨域? 指的是浏览器不能执行其他网站的脚本,简单来说是浏览器同源政策的限制,浏览器针对于ajax的限制。 同源政策 两个页面拥有相同的协议,端口,域名 就是同源,如果有一个不相同就是不同源。 同源政策产生的目的 保护用户信息安全,防止一些网站盗取用户信息。 解决跨域的方案一 1.jsonp (json with padding) json with padding 将json 数据作为填充,简单来说就是服务器将json作为函数的参数。 原理: 1.动态创建一个script标签 ..

^_^ 8899

矢量量化的基本原理:高效数据压缩与信息检索的关键矢量量化(Vector Quantization,简称VQ)是一种数据压缩和信

此外,在矢量量化过程中,可能会引入一定的信息损失,对一些精细特征的表示可能存在一定的误差。它通过将高维数据映射到低维码本空间中,并将相似的数据映射到相同的码本向量中,实现对数据的高效表示和存储。最重要的是,矢量量化可以用于数据的检索和分析,提供了高效的数据查询和处理手段。通过使用码本索引,我们可以高效地存储和检索大量的数据。在图像处理中,矢量量化可以用于图像压缩,将复杂的图像数据转化为较少的码字,实现图像的存储和传输。矢量量化通过将连续的高维数据分割并映射到有限的码本集合中,实现数据的离散表示和压缩。

m0_70886513的博客 1373

【驱动适配】高通sa522平台tac5x1x驱动适配全指南

本手册详细介绍了TAC5301-Q1音频编解码器在高通sa525平台Linux系统下的驱动适配流程。主要内容包括:1)TAC5301-Q1核心特性(车载级音频Codec、关键接口和功能);2)驱动适配依赖(高通声卡驱动、ALSA SoC框架等);3)I2S协议原理及主从模式说明;4)硬件准备与检查要点;5)完整的驱动移植步骤(代码移植、Kconfig/Makefile修改、设备树配置)。该手册适用于嵌入式音频开发工程师快速完成TAC5301-Q1芯片的驱动移植与验证工作。

嵌入式博哥的博客 304

javascript中跨域问题的解决方法汇总

javascript中实现跨域的方式总结 第一种方式:jsonp请求;jsonp的原理是利用<script>标签的跨域特性,可以不受限制地从其他域中加载资源,类似的标签还有<img>. 第二种方式:document.domain;这种方式用在主域名相同子域名不同的跨域访问中 第三种方式:window.name;window的name属性有个特征:在一个窗...

482

基于74LS175的四人抢答电路设计(含详细设计分析及试错过程)

根据设计要求不难发现,只要有一人抢答,就会输出信号使指示灯常亮,此时其他人输入无效,适宜选择触发器,有人抢答时触发器输出由0变1,输出信号控制指示灯常亮,同时使CLR引脚输入0,触发器不工作,即其他选手不能再抢答。尝试加入一人抢答后其他人不可抢答功能,如下图,175四个~Q输出端接入同一个与非门,于是当有选手抢答时该与非门输出由0变1,将该信号输入U5A,U5A输出由1变0,接入~CLR即可使电路不再工作。但仿真时发现,该复位键仅可使抢答电路部分复位,计数部分只是暂停,并未复位。否则元器件将无法正常工作。

2202_75463653的博客 8191

JS 跨域问题

官方文档介绍 一、简介 跨域:指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器对javascript 施加的安全限制。 同源策略:是指协议,域名,端口都要相同,其中有一个不同都会产生跨域;   跨源资源共享标准新增了一组 HTTP 首部字段,允许服务器声明哪些源站通过浏览器有权限访问哪些资源。另外,规范要求,对那些可能对服务器数据产生副作用的 HTTP 请求方法(特别是 GET 以外的 HTTP 请求,或者搭配某些 MIME(媒体类型)类型 的 POST 请求),浏览器必须首先使

FireCode的博客 2793

计算机组成原理汉字编码与校验设计实验报告(汉字国标码转区位码实验、汉字机内码获取实验、海明编码电路设计与海明解码)

这次实验利用logisim进行设计,进行了以下这四个实验,其中分为汉字国标码转区位码实验、汉字机内码获取实验、海明编码电路设计与海明解码,实验报告分为四个部分,在这四个部分中依次对四个实验的方案设计,设计思路进行了介绍

zhang2gongzi的博客 6万+

【RV1126/RV1109学习笔记】#基础篇#(2)基础入门使用

一、调试方式 1、串口调试 2、ADB调试 3、网络调试 二、基础外设使用 音频使用(aplay,arecord,amixer) 三、WIFI连接 四、屏幕背光控制

丨晋丨 1857

JavaScript跨域的6种方法

1 通过JSONP跨域(此方法对全域跨域和子域跨域都满足) Jsonp(JSON with Padding) 是 json 的一种"使用模式",可以让网页从别的域名(网站)那获取资料,即跨域读取数据。 为什么我们从不同的域(网站)访问数据需要一个特殊的技术(JSONP )呢?这是因为同源策略。 例如有个1.html,其中的代码需要获取一个不同域上的json数据,假设这个json数

明天回火星 960

PX4从放弃到精通(十一):混控及PWM输出

文章目录前言一、混控脚本二、使用步骤1.引入库2.读入数据总结 前言 一个人可以走的更快,一群人才能走的更远,交流学习加qq:2096723956 更多保姆级PX4+ROS学习视频:https://b23.tv/ZeUDKqy 分享知识,传递正能量,如有疏漏或不当之处,恳请指出. 一、混控脚本 混控脚本定义了不同 示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。 二、使用步骤 1.引入库 代码如下(示例): import numpy as np import pand

超维空间科技的博客 1万+

js解决跨域问题

一、同源策略 所谓同源策略,就是指两个页面具有相同的协议,主机(也常说域名),端口,三个要素缺一不可 二、什么是跨域 单地理解就是因为JavaScript同源策略的限制,一个域的页面去请求另一个域的资源,A域的页面去请求B域的资源。 三、解决跨域 1.Jsonp实现跨域 jsonp的原理:动态创建<script>标签,而<script>的src属性是没有跨域限制的 前端创建script标记,设置src,添加到head中(你可以往body中添加) 后台返回一个.

小罗的博客 3404

一篇文章带你认识 SpringBoot

文章目录一、原有 Spring 优缺点分析二、SpringBoot 的概述 一、原有 Spring 优缺点分析 (1)Spring 的优点分析 Spring是Java企业版(Java Enterprise Edition,JEE,也称J2EE)的轻量级代替品。无需开发重量级的Enterprise JavaBean(EJB),Spring为企业级Java开发提供了一种相对简单的方法,通过依赖注入和面向切面编程,用简单的 Java 对象(Plain Old Java Object,POJO)实现了EJB的功能。

南淮北安的博客 766

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

聊一聊跨域访问

在了解跨域访问之前,首先我们得先知道什么是跨域,为什么会产生跨域? 1.什么是跨域访问 JavaScript出于安全方面的考虑,不允许跨域调用其他页面的对象。 首先什么是跨域,简单地理解就是因为JavaScript同源策略的限制,a.com 域名下的js无法操作b.com或是c.a.com域名下的对象。更详细的说明可以看下表: URL 说明 ...

baidu_41601299的博客 308

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

【JavaScript】JS引用本地文件CORS跨域问题

场景 Three.js搭建3D场景时,模型贴图加载失败,报错: THREE.TextureLoader() Origin null is not allowed by Access-Control-Allow-Origin     分析 很显然,此时在浏览器上方可以看到file:///——标准的File协议(本地文件传输协议) File协议静态请求本地资源出现跨域,这个请求被禁止。即File协议无法实现跨域。   通俗的说(⭐️): file协议只能在本地访问,且这个访问只是

丧心病狂Loli控的博客 5110

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

坐下来聊一聊,跨域

1.首先要了解什么叫跨域?跨域和不跨域有什么区别 1,首先什么叫“域”? 故名思意就是区域的意思,假设现在有三台服务器A(http://66.66.66.66:8081), B(http://66.66.66.66:8082),C(http://77.77.77.77:8081);场景:A是一台展示你登录微信界面的服务器, B是一台验证你登录微信的服务器,C是一个看小视频的服务器; ...

qq_44742816的博客 434

Node.js——跨域访问

跨域是指浏览器在执行 JavaScript 代码时,由于同源策略限制,不同域名、端口或协议的网页之间无法自由进行数据交互的现象。同源策略浏览器的安全机制,要求两个页面的 协议、域名、端口 完全一致才视为 “同源”,否则即为 “跨域”。例如:http://localhost:3000 与 http://localhost:4000 因端口不同,属于跨域;http://a.com 与 https://a.com 因协议不同,属于跨域。

2302_80932253的博客 1262

解决js跨域问题

解决js跨域问题

风之子的专栏 6万+

聊一聊ajax如何跨域

ajax能跨域吗? 我们现在来测试一下 首先准备两个后端服务器 第一个 const Koa = require("koa"); const static = require("koa-static"); const Router = require("koa-router"); let app = new Koa(); let router = new Router(); app.use(st...

CS_DGD的博客 328

JS-POST跨域

在js中如何实现CORS(cross origin resource sharing)kuayuan

凡事预则立,不预则废 2030

JS如何跨域请求JSON数据

首先,JS不可以直接跨域请求JSON数据,但是JS可以跨域加载JS。 那么什么是跨域请求呢? 1、域名不同 2、域名相同,但是端口不通 以上两个请求都属于跨域请求,只有域名和端口完全一样才不是跨域。 例如: www.taotao.com --->请求www.taobao.com 也是跨域 www.taotao.com-->请求sso.taotao.com 也是跨域 www.taota...

91奔跑的蜗牛 1379

聊一聊SpringBoot中使用CROS实现跨域请求

在了解SpringBoot使用CROS实现跨域问题之前,我们先聊聊什么是跨域? 举个简单例子:比如我是中国人,我想出国去另一个国家,但是第一次出国要办理一系列手续,办理完手续后才能出国去到另一个国家,这是现实中的跨域问题,同理,作为开发人员,我们日常的系统资源访问多多少少也会存在跨域问题,比如我的网站要获取另一个网站的资源,但是这是两个不同的站点,这样我们要获取所需资源就需要跨域。 为什么会有跨域...

Wanik666 478

JavaScript的跨域访问问题

文章分享:详解JS跨域问题 HTTP access control (CORS) html5 postMessage解决跨域、跨窗口消息传递 跨域与跨域访问一、什么是跨域?概念:只要协议、域名、端口有任何一个不同,都被当作是不同的域。二、为什么浏览器要限制跨域访问呢?原因就是安全问题:如果一个网页可以随意地访问另外一个网站的资源,那么就有可能在客户完全不知情的情况下出现安全问题。三、跨域的常用

luoxinwhu的博客 1365
上一篇: css之分页打印
下一篇: JS 字符串
炸鸡大叔
博客等级 码龄11年 90粉丝 50原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值