浅谈跨域问题

方案设计之亿级排行榜方案设计 该方案通过 “Redis Zset 为核心 + 分治策略为骨架 + 多级优化为细节”,在亿级用户场景下实现了:本质是将 “亿级大问题” 拆解为 “千万级小问题”,用分布式思想和精细化设计平衡性能、可用性与成本。 阅读详情

1前言: 这几天在公司做一个大数据量的导出功能,但是一直在服务器内存和各种后端性能极优的情况下总是不能达到预期效果,所以很脑壳疼,在探究问题的原因时,发现前端报错了,在百度搜索知道是VUE响应超时时,我看一下前端设置的超时时间是10S,几十万的数据导出你让我10S做出响应,我也是醉了,不知道为什么研究着,研究着这个问题,突然研究起来跨域问题来了,看到有个博客写的不错,根据这个博客内容,再结合自己的思考,做一下记录。

2.1什么是跨域:是指浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器对JavaScript实施的安全限制。这里说明一下,无法跨域是浏览器对于用户安全的考虑,如果自己写个没有同源策略的浏览器,完全不用考虑跨域问题了。是浏览器的锅,对。
2.2什么情况下算是跨域:当一个请求url的协议、域名、端口三者之间任意一个与当前页面url不同即为跨域

当前页面url被请求页面url是否跨域原因
http://www.test.com/http://www.test.com/index.html否同源(协议、域名、端口号相同)
http://www.test.com/https://www.test.com/index.html跨域协议不同(http/https)
http://www.test.com/http://www.baidu.com/跨域主域名不同(test/baidu)
http://www.test.com/http://blog.test.com/跨域子域名不同(www/blog)
http://www.test.com:8080/http://www.test.com:7001/跨域端口号不同(8080/7001)

2.3跨域问题会带来什么安全问题: 答案是有可能被不法分子利用来发动 CSRF攻击。
2.3.1什么是CSRF攻击:中文名称:跨站请求伪造,也被称为:one click attack/session riding,缩写为:CSRF/XSRF。CSRF攻击者在用户已经登录目标网站之后,诱使用户访问一个攻击页面,利用目标网站对用户的信任,以用户身份在攻击页面对目标网站发起伪造用户操作的请求,达到攻击目的。
2.3.2CSRF攻击的过程
在这里插入图片描述
​ CSRF 攻击的原理大致描述如下:有两个网站,其中A网站是真实受信任的网站,而B网站是危险网站。在用户登陆了受信任的A网站是,本地会存储A网站相关的Cookie,并且浏览器也维护这一个Session会话。这时,如果用户在没有登出A网站的情况下访问危险网站B,那么危险网站B就可以模拟发出一个对A网站的请求(跨域请求)对A网站进行操作,而在A网站的角度来看是并不知道请求是由B网站发出来的(Session和Cookie均为A网站的),这时便成功发动一次CSRF 攻击。
2.4既然跨域会引起安全问题,浏览器是怎么样限制跨域,来维护我们的安全的呢?——答案是同源策略。
2.4.1什么是同源:域名、协议、端口有一个不同就不是同源,三者均相同,这两个网站才是同源
2.4.2同源策略的含义:

  • DOM 层面的同源策略: 限制了来自不同源的”Document”对象或 JS 脚本,对当前“document”对象的读取或设置某些属性

  • Cookie和XMLHttprequest层面的同源策略:禁止 Ajax 直接发起跨域HTTP请求(其实可以发送请求,结果被浏览器拦截,不展示),同时 Ajax 请求不能携带与本网站不同源的 Cookie。

  • 同源策略的非绝对性:<script><img><iframe><link><video><audio>等带有src属性的标签可以从不同的域加载和执行资源。

  • 其他插件的同源策略:flash、java applet、silverlight、googlegears等浏览器加载的第三方插件也有各自的同源策略,只是这些同源策略不属于浏览器原生的同源策略,如果有漏洞则可能被黑客利用,从而留下XSS攻击的后患.

2.5虽然跨域会出现安全问题,只要我们安全防范还是可以避免的,浏览器默认是不支持跨域的,我们怎么样解决跨域问题呢?
2.5.1综述解决办法:经常使用的 JSONP, CORS 方法。
2.5.2方案一:JSONP
2.5.2.1原理:

  • JSONP 是一种非官方的跨域数据交互协议
  • JSONP 本质上是利用 <script><img><iframe> 等标签不受同源策略限制,可以从不同域加载并执行资源的特性,来实现数据跨域传输。
  • JSONP由两部分组成:回调函数和数据。回调函数是当响应到来时应该在页面中调用的函数,而数据就是传入回调函数中的JSON数据。
  • JSONP 的理念就是,与服务端约定好一个回调函数名,服务端接收到请求后,将返回一段 Javascript,在这段 Javascript 代码中调用了约定好的回调函数,并且将数据作为参数进行传递。当网页接收到这段 Javascript 代码后,就会执行这个回调函数,这时数据已经成功传输到客户端了。

2.5.2.2示例:
前端代码:

<script src="http://test.com/data.php?callback=dosomething"></script>
// 向服务器test.com发出请求,该请求的查询字符串有一个callback参数,用来指定回调函数的名字

// 处理服务器返回回调函数的数据
<script type="text/javascript">
    function dosomething(data){
        //处理获得的数据
    }
</script>

后端代码:
在这里插入图片描述

2.5.2.3优缺点:

  • 优点:它不像XMLHttpRequest对象实现的Ajax请求那样受到同源策略的限制;它的兼容性更好,在更加古老的浏览器中都可以运行。

  • 缺点:它只支持 GET 请求,而不支持 POST 请求等其他类型的 HTTP 请求

2.5.3方案二:CORS
简介: 跨源资源共享 Cross-Origin Resource Sharing(CORS) 是一个新的 W3C 标准,它新增的一组HTTP首部字段,允许服务端其声明哪些源站有权限访问哪些资源。换言之,它允许浏览器向声明了 CORS 的跨域服务器,发出 XMLHttpReuest 请求,从而克服 Ajax 只能同源使用的限制。

​ 另外,规范也要求对于非简单请求,浏览器必须首先使用 OPTION 方法发起一个预检请求(preflight request),从而获知服务端是否允许该跨域请求,在服务器确定允许后,才发起实际的HTTP请求。

Python爬虫应对Cloudflare防护:5秒盾+Turnstile验证码实战(AST反混淆+指纹模拟,成功率95%) Cloudflare 5秒盾+Turnstile验证码的防护核心,是通过“前端JS挑战+多维度指纹校验”确认请求来源的真实性。用AST反混淆还原CF的验证逻辑,避免执行无用代码导致的验证失败;基于真实浏览器采集指纹,确保指纹维度100%匹配真人环境;结合轻量级JS引擎和自动化工具,模拟完整的浏览器执行环境。该方案的绕过成功率可达95%(剩余5%主要是IP或请求频率导致的风控),适用于绝大多数部署CF防护的网站。 阅读详情

相关推荐

Keil环境下单片机串口通信实战:如何用printf发送中文(附完整代码)

本文详细解析了在Keil开发环境下,单片机通过串口通信发送中文信息时产生乱码的根本原因及解决方案。核心在于理解并统一编码(如GB2312或UTF-8),并正确重定向printf函数。文章提供了针对STC89C52和STM32F103的完整代码示例,涵盖工程配置、编码设置、调试技巧,帮助开发者实现稳定可靠的中文串口输出。

weixin_29168675的博客 467

从跨域引发的Web安全思考

面试时常会出现跨域的解决方式,那么从为什么会产生跨域思考,就会有很多相关的知识跳出来了。也会帮助把以前不相关的知识点串联起来。web 浏览器中包含javascript解释器,也就是说,一旦载入Web页面,就可以让任意的JavaScript代码在计算机里执行。这就造成了很大的安全隐患。攻击者可能会读取或修改数据、盗取隐私等。

dzqxwzoe的博客 758

DEA-Malmquist指数模型实战:从理论到应用的全流程解析

本文全面解析了DEA-Malmquist指数模型从理论到应用的全流程。文章详细阐述了该模型如何动态衡量效率随时间的变化,并将其分解为技术效率变化与技术进步,从而精准定位效率变动的根源。通过实战步骤演示了数据准备、软件操作(如DEAP 2.1)及结果解读,并结合水资源环境效率等案例,展示了其在包含非期望产出时的应用价值,为研究者进行动态效率分析提供了清晰指南。

b0c1d2的博客 220

跨域后果、跨域的理解

什么是跨域 同源策略是浏览器的一种基础安全功能, 会阻止一个域的javascript脚本和另一个域的内容交互 当请求url的协议,域名, 端口三者任意一个与当前页面url不同, 就会跨域 跨域的后果 就是违反同源策略的后果: 1.无法读取同源网页的cookies,LocalStorage和IndexedDB 2.无法解除非同源网页的DOM 3.无法向非同源网页发送AJAX请求 注: 本文为部分转载, 完整文章请访问:https://blog.youkuaiyun.com/qq_38128179/article/deta

weixin_43228393的博客 1204

椭圆曲线点加的推导公式(一)

椭圆曲线点加推导过程

qq_32100199的博客 1516

SAP期初库存导入 (1)

LSMW

IT养家 7191

N种方法解决跨域问题

N种方式解决跨域问题

Benjamin 7947

NXP S32k3 MCAL EMIOS PWM配置

NXP s32k 配置 EMIOS PWM

Leon_0125的博客 2699

看完对于跨域还有疑问,请顺着网线过来打死我

跨域的所有问题,这里都可以看到答案

初心不忘、始终方得 3837

6、Cocos2D游戏开发:精灵添加与角色实现

本文详细介绍了在Cocos2D游戏开发中如何添加背景精灵和玩家角色精灵。通过创建GameScene场景、组织项目资源、使用多分辨率图像适配不同设备,并深入讲解了将角色拆分为上下半身以实现更真实瞄准效果的原理。文章还解析了Cocos2D的图像搜索机制、锚点概念及其应用,以及如何通过父子节点关系管理复合角色。最终实现了猎人角色在场景中的正确显示与定位,为后续动画和交互功能打下基础。

e3f4g5的博客 90

C/C++小宇宙代码(完整代码)

C语言实现小宇宙的完整代码。

AIGC 2523

面试必问之什么是跨域?以及跨域解决方法

同源策略要求协议、域名、端口完全相同才能进行交互,若任何一个不同,就会被视为跨域。当前页面URL被请求页面的URL是否产生跨域原因否同源(协议、域名、端口相同)跨域协议不同跨域域名不同跨域端口号不同谈谈你对跨域的理解,如何解决跨域问题?跨域是指在不同的页面之间进行数据传输或通信产生的,严格一点说:只要 协议,域名,端口有任何一个的不同,就当作是跨域。跨域是浏览器的同源策略造成的,是浏览器对JavaScript施加的安全限制。这是为了防止恶意脚本获取用户的敏感信息或进行其他攻击。what。

qq_56352725的博客 1609

NX二次开发-用户自定义资源栏选项卡RegisterActivationCallback

NX二次开发-用户自定义资源栏选项卡RegisterActivationCallback

阿飞2018 1385

浅谈跨域问题,以及跨域问题如何处理

一、概述 我们在开发过程中经常会遇到前后端分离而导致的跨域问题,导致无法获取返回结果。跨域就像分离前端和后端的一道鸿沟,君在这边,她在那边,两两不能往来。 ①、什么是跨域 跨域(CORS)是指不同域名之间相互访问。指的是浏览器不能执行其他网站的脚本,它是由浏览器的同源策略所造成的,是浏览器对于JavaScript所定义的安全限制策略。 ②、什么情况会跨域 同一协议, 如http或https 同一IP地址, 如127.0.0.1 同一端口, 如8080 以上三个条件中有一个条件不同就会产生跨域问

两米以下皆凡人的博客 770

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

浅谈一下跨域问题

出于浏览器的同源策略限制。(协议、域名、端口任一不一致视为非同源)同源策略会阻止一个域的javascript脚本和另外一个域的内容进行交互。导致非同源网站无法共享Cookie、LocalStorage 和 IndexedDB,也无法进行ajax交互。

前端成长之路 1553

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

浅谈CORS跨域问题

前言 在web开发中,有时会遇到如下错误: Access to XMLHttpRequest has been blocked by cors policy 这个错误经常出现在新项目刚开始的时候,处理的方式一般有两种: 1. 在浏览器上装个跨域插件或跑个本地代理,适用于本地调试。 2. 调整服务端配置,从根本上解决。 这是个老生常谈的跨域问题,今天我们来重新认识一下。 什么是跨域 一个URL的组成可以简化为四部分:协议,域名,端口号,路径。 格式为:协议://域名:端口号/路径。 比如地址: http

小小郭 1387

浅谈前端跨域问题

浅谈前端跨域问题

m0_72561007的博客 539

浅谈跨域问题以及如何使用Nginx解决跨域问题

目录跨域问题举个栗子Nginx解决跨域问题什么时候发送OPTIONS方法预检请求OPTIONS方法参考文章 跨域问题 跨域问题经常发生在前后端分离开发模式中,指的是浏览器不允许非同源的请求调用,是浏览器出于安全考虑的一种策略. 两个网址之间只要协议, 域名, 端口, 子域名其中一个不同, 就会被视为非同源. 举个栗子 前端用html + js 代码做一个简单的接口调用 <html> <head> <meta http-equiv="content-type" conte

soap_hzD的博客 665

【网络】浅谈前端跨域问题及使用代理解决跨域问题

一、是什么 是由于浏览器存在的同源策略,**ajax请求资源和当前位置**是否同源。 同源:协议、域名、端口号必须完全一致, 违背同源策略就是跨域。 二、特点 (1)跨域只存在于浏览器发请求,服务器不会。 (2)http分两大类:普通http请求和ajax请求,跨域出现在ajax请求中。 三、解决方案 1、jsop 1、介绍 非官方跨域解决方案,只支持get请求 2、工作原理 在网页有一些标签天生具有跨域能力,比如:img link iframe script。JSONP就是**利用script标签的跨域

weixin_48989252的博客 1671

php跨域问题,浅谈PHP的跨域问题

这篇文章介绍的内容是关于PHP的跨域问题,现在分享给大家,有需要的朋友可以参考一下先说一个最简单的例子吧先上服务端的代码public function kuayu(){header("Access-Control-Allow-Origin: http://baidu.com"); //说明是允许百度访问你的服务器return json(['status'=>0,'msg'=>1231]...

weixin_42349261的博客 236

为什么php没有跨域问题,浅谈PHP的跨域问题

这篇文章介绍的内容是关于PHP的跨域问题,现在分享给大家,有需要的朋友可以参考一下先说一个最简单的例子吧先上服务端的代码public function kuayu(){header("Access-Control-Allow-Origin: http://baidu.com"); //说明是允许百度访问你的服务器return json(['status'=>0,'msg'=>1231]...

weixin_42112894的博客 214

浅谈PHP的跨域问题

先说一个最简单的例子吧先上服务端的代码public function kuayu(){     header("Access-Control-Allow-Origin: http://baidu.com"); //说明是允许百度访问你的服务器     return json(['status'=&gt;0,'msg'=&gt;1231]); }Access-Control-Allow-Origin...

change博客 683

前后端交互跨域问题及cookie&session浅谈

跨域问题的原因:根据同源策略,浏览器不允许ajax访问当前源之外的资源即不同域名之间相互访问,是浏览器对js的安全限制。(eg:前端和后端部署的端口号不同,且没有相应的跨域请求处理) 同一个域:同一协议;同一ip;同一端口; 解决方法小结:规避同源策略 1.后端自定义filter,在请求头里面加上参数; 实现Filter接口,新建一个名为CORSFilter的Filter;注册过滤器;在应用启动类中添加@ServeletComponentScan注解,项目启动时自动扫描serclet组件(参考文

m0_48907853的博客 1487
上一篇: IDM下载神器全新详解教程:如何安装以及不限速下载某网盘资源
下一篇: 多线程之四种创建方式
jothan_lee
博客等级 码龄9年 30粉丝 58原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值