浏览器跨域方案

浏览器跨域解决方案详解 跨域(Cross-Origin)指的是在 Web 开发中,一个网页的运行环境(域)与所请求资源的域不一致,即请求的目标资源与当前网页的域名(协议、域名或端口)不同。Web 浏览器遵循同源策略(Same-Origin Policy),这是一种安全策略,旨在防止潜在的恶意网站窃取用户数据或进行其他安全攻击。同源策略要求网页的运行环境和所请求的资源必须拥有相同的协议、域名和端口,否则浏览器会阻止跨域请求的执行。举例来说,每个网站都有一个域名或者IP地址(实际上域名就是对IP地址的别名,方便人们记忆)。 阅读详情

很多种方法,但万变不离其宗,都是为了搞定同源策略。重用的有 jsonp、iframe、cors、img、HTML5 postMessage等等。其中用到 html 标签进行跨域的原理就是 html 不受同源策略影响。但只是接受 Get 的请求方式,这个得清楚。

延伸1:img iframe script 来发送跨域请求有什么优缺点?

1. iframe

  • 优点:跨域完毕之后DOM操作和互相之间的JavaScript调用都是没有问题的
  • 缺点:1.若结果要以URL参数传递,这就意味着在结果数据量很大的时候需要分割传递,巨烦。2.还有一个是iframe本身带来的,母页面和iframe本身的交互本身就有安全性限制。

2. script

  • 优点:可以直接返回json格式的数据,方便处理
  • 缺点:只接受GET请求方式

3. 图片ping

  • 优点:可以访问任何url,一般用来进行点击追踪,做页面分析常用的方法
  • 缺点:不能访问响应文本,只能监听是否响应

延伸2:配合 webpack 进行反向代理?

webpack 在 devServer 选项里面提供了一个 proxy 的参数供开发人员进行反向代理

'/api': {
  target: 'http://www.example.com', // your target host
  changeOrigin: true, // needed for virtual hosted sites
  pathRewrite: {
    '^/api': ''  // rewrite path
  }
},

然后再配合 http-proxy-middleware 插件对 api 请求地址进行代理

const express = require('express');
const proxy = require('http-proxy-middleware');
// proxy api requests
const exampleProxy = proxy(options); // 这里的 options 就是 webpack 里面的 proxy 选项对应的每个选项

// mount `exampleProxy` in web server
const app = express();
app.use('/api', exampleProxy);
app.listen(3000);

然后再用 nginx 把允许跨域的源地址添加到报头里面即可

说到 nginx ,可以再谈谈 CORS 配置,大致如下

location / {
  if ($request_method = 'OPTIONS') {
    add_header 'Access-Control-Allow-Origin' '*';  
    add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS'; 
    add_header 'Access-Control-Allow-Credentials' 'true';
    add_header 'Access-Control-Allow-Headers' 'DNT, X-Mx-ReqToken, Keep-Alive, User-Agent, X-Requested-With, If-Modified-Since, Cache-Control, Content-Type';  
    add_header 'Access-Control-Max-Age' 86400;  
    add_header 'Content-Type' 'text/plain charset=UTF-8';  
    add_header 'Content-Length' 0;  
    return 200;  
  }
}
windows系统谷歌浏览器出现CORS跨域解决方案 阅读详情

相关推荐

iframe的优缺点、使用

iframe的优缺点、使用

m0_51221372的博客 1370

SpringBoot 自定义注解来实现动态切换数据源

/ 初始化数据源@Override@Inherited@Pointcut(“@annotation(包名.aop.DataSource)”) public void@Pointcut 注解定义了一个切点,名称为 dynamicDataSource。@annotation(包名.aop.DataSource) 表示这个切点匹配所有带有 @DataSource 注解的方法。

晴天飛 雪的博客 1838

美团前端常考面试题(必备)

延伸1:img iframe script 来发送跨域请求有什么优缺点?

Web面试那些事儿的博客 2120

嵌入式存储实战:FAL+SFUD+flashDB三件套在STM32上的完整移植指南(附避坑技巧)

本文提供了一套在STM32上完整移植FAL、SFUD与flashDB嵌入式存储框架的实战指南。详细解析了从SPI驱动配置、SFUD设备识别、FAL抽象层分区到flashDB键值数据库初始化的全流程,并分享了关键的避坑技巧与性能优化建议,帮助开发者构建稳定可靠的嵌入式存储系统。

rnn9storyteller的博客 1017

软考高级,信息系统项目管理师(高项)经验分享

软考高级,信息系统项目管理师(高项)经验分享 2020-12-21信息系统项目管理师(俗称高项)成绩出来了54,55,47,终于成为高级工程师了。 本文以编写整体管理论文的格式进行,将分为项目启动、项目计划、项目执行、项目检查、项目收尾5个过程回顾高项的考试历程,希望对其他同学有借鉴意义。个人觉得可能对于一次考不过的人参考价值比较大。 第一阶段、项目启动阶段Start——决定考哪个科目。 如图,高级资格的类型有:信息系统项目管理师、系统分析师、系统架构设计师、......

zcheva的专栏 5万+

聊聊跨域

传统的javaee架构 下面是常见的 javaee 架构的简化版,客户端请求 apache/nginx 代理服务器,代理服务器接收到请求后将请求转发到后台的应用服务器(tomcat、jeety 等),后台应用服务器处理请求,将结果返回给代理服务器,代理服务器接收到请求后,再将请求返回给客户端。这就是一个完整的请求、响应的流程。 什么是跨域请求 前台接口调用后台服务的时候,如果前台接口跟后...

黄晓宇的博客 853

【VS Code插件开发】通用功能(二)

本篇主要从command(命令)、menus(菜单)、快捷键三个方面讲解,都归于通用功能。

编码世界 1万+

script的src和img的src跨域的区别

原理上都是利用标签的src可绕过同源限制,跨域请求的特点, 硬要说不同,那么区别在于:img只能单向发送get请求,不可访问响应内容(只是展现),而script可对其进行解析

T_ambition的博客 1376

13、基于RBF的自适应鲁棒控制与反步控制方法及实现

本文介绍了基于RBF神经网络的自适应鲁棒控制与反步控制方法,详细阐述了控制系统的程序结构、核心算法及实现流程。通过Simulink搭建仿真系统,利用RBF网络逼近系统中的不确定非线性函数,并结合Lyapunov稳定性理论设计控制律,实现了对倒立摆等复杂非线性系统的高精度跟踪控制。文章还提供了完整的MATLAB/Simulink代码示例和仿真结果分析,验证了该方法的有效性与鲁棒性,为实际工程应用提供了可行的技术路径。

ol789012的博客 88

流体动力学仿真软件:SU2_(1).SU2简介与安装

SU2 是一个开源的计算流体动力学(CFD)和计算结构动力学(CSD)仿真软件,由斯坦福大学的航空航天系开发。它主要用于解决流体动力学问题,包括但不限于空气动力学、热力学、化学反应流等。SU2 的特点在于其高度的灵活性和可扩展性,使其成为科研和工业领域中非常受欢迎的工具。SU2 采用有限体积法(FVM)和有限元法(FEM)进行数值求解,支持多种物理模型和求解器,如 Euler 方程、Navier-Stokes 方程、RANS 方程等。

kkchenjj的博客 1313

关于JavaScript为何要限制跨域访问

对于JavaScript限制跨域访问的原因一直不明白,因为他给我的开发过程中带来不少的麻烦,也实在想不明白JavaScript限制跨域的作用,今天带着这个疑问到开元中国提问了,没想到一个大神的解答让我茅塞顿开啊。  大神的解答  在Firebug控制台中运行  $.ajax('http://www.baidu.com/');  请求会被Firefox阻止并提示:  已阻止交叉源请

jueshengtianya的专栏 1064

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

浏览器跨域问题的原因分析及常见解决方案

协议(http/https)、域名(example.com)、端口(:8080)三者完全一致。

七公子77的技术博客 2175

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

浏览器的跨域问题与解决方案

跨域问题的核心是请求不同源。例如,如果一个网页试图通过Ajax请求访问另一个域名的数据,而这两个域名不同源,那么请求将被浏览器阻止。在这些示例中,CORS和JSONP直接在服务器端和客户端之间工作,而代理服务器则作为一个中间层,将客户端的请求转发到目标服务器,并将响应返回给客户端。标签,并向服务器传递一个回调函数名,服务器在返回数据时,将这个回调函数名作为函数调用的前缀,从而实现跨域通信。总之,跨域问题是Web开发中常见的一个问题,但通过合理的解决方案,可以有效地实现跨域通信,满足实际应用的需求。

小牛itbull的博客 1453

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

chrome浏览器解决跨域请求三种方案

在chrome浏览器地址栏输入chrome://flags并回车 在搜索栏中输入SameSite by default cookies搜索,并禁用如图中的两项设置 ,改为Disabled即可 点击右下键ReLaunch重启浏览器即可

Fonlin的博客 4万+

政务浏览器+,视频跨域办新方案

政务浏览器+视频,跨域办新方案

nychen2000的专栏 1340

浏览器跨域问题及其解决方案详解

跨域问题是浏览器同源策略导致的资源访问限制,常见于前后端分离开发中。主要解决方案包括:1)CORS(主流方案),通过服务端设置HTTP头实现;2)JSONP(仅限GET请求);3)代理服务器(开发常用);4)WebSocket等特殊协议。其中CORS需要处理预检请求和凭证携带等特殊情况,生产环境建议避免使用通配符*,而应指定具体域名。开发时可结合代理方案,最终部署推荐同源或反向代理方式。选择方案时应兼顾功能需求与安全性。

qq_37884031的博客 1991

浏览器拦截跨域请求处理方法&前端解决跨域问题的8种方案

原文地址:https://www.cnblogs.com/PheonixHkbxoic/p/5760838.html 浏览器拦截跨域请求处理方法(已阻止跨源请求:同源策略禁止读取远程资源) 在浏览器请求中,出现跨域访问资源的问题,我们肯定会遇到。如果跨域请求被阻止,有可能导致css、js 、ajax请求、font字体等资源出现无法正常访问的问题。接下来,就介绍下解决同源策略不允许读取远程资源的问题。 今天就谈下远程字体跨域的问题。 直接了当了说,解决此类问题,最直接的方法就是,就是给被请求的服务器,添加HT

renjie123321的博客 1万+

谷歌浏览器跨域最全解决方案

之前,我写过一篇文章《前后端分离开发跨域问题总结》主要是通过修改前后端代码(写一些跨域配置)去解决跨域问题,本篇介绍另外一种方式,无需修改代码,也可以在开发中的进行前后端调试。

请你喝杯Java 2万+

浏览器同源策略与跨域解决方案

浏览器同源策略(SOP)是核心安全机制,限制不同源之间的资源交互。跨域解决方案包括:1) CORS通过HTTP头实现标准化跨域访问;2) JSONP利用script标签但仅支持GET请求;3) 代理服务器转发请求;4) WebSocket和postMessage实现特殊场景通信。开发中需注意安全风险,如CORS配置不当、CSRF攻击等。现代应用应优先使用CORS,结合安全策略保障跨域访问安全。本文系统介绍了跨域技术原理与实现方案,帮助开发者构建安全的跨域应用。

qq_46082433的博客 222

浏览器跨域访问解决方案

浏览器跨域访问解决方案

10年职场两茫茫,35岁凄凉奈若何 120

浏览器跨域问题的几种解决方案

浏览器跨域问题的集中解决方案 跨域问题的原因是浏览器同源策略的限制。 同源策略限制从一个源加载的文档或脚本与来之另一个源的资源进行交互,这是一个用于隔离潜在恶意文件的安全机制。 一个源的定义:如果协议、端口(如果指定了一个)和域名对于两个页面是相同的,则两个页面具有相同的源。 通常解决跨域问题有以下几种方法 1.jsonp 2.cors 3.降域 4.postmessage jsonp 原理 首先...

qq_43233278的博客 520

Mac和Window的Chrome浏览器跨域完美解决方案 | 开发调试必备(接口跨域、本地调试)

第三步:右键点击第一步复制出来的chrome浏览器,点击属性,来到快捷方式,将。1.command+ 空格打开,输入automator回车打开automator。第二步:在c盘新建一个文件夹,命名为MyChromeDevUserData。第一步:复制一份chrome浏览器在桌面,重命名(用于区分跨域和非跨域)4.关闭并重命名,选择好位置,保存到应用程序,点击存储。5.查看 Launchpad 中,就有这个跨域的图标了。3.选择实用工具中的shell脚本,双击之后输入。粘贴在目标一栏的最后,点击确定。

weixin_51733280的博客 6937

谷歌浏览器 跨域解决方案

谷歌浏览器跨域解决方案

sunluyi的博客 4271
上一篇: XSS 和 CSRF
下一篇: 浏览器存储
小码哥・Martin
博客等级 码龄18年 10粉丝 225原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

小码哥・Martin

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

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

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

打赏作者

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

抵扣说明:

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

余额充值