当前位置: 首页 > article >正文

请求转发vs重定向、同源策略与跨域

在Java Web开发和前端交互中请求转发、重定向与跨域问题是高频考点也是实际开发中不可或缺的知识点。本文结合表格对比、实例说明完整梳理三者的逻辑、差异及实用解决方案帮大家分清易混淆概念高效应对开发中的相关场景。一、同源策略1. 同源判定标准同源策略的判定是协议Protocol 域名/主机Host 端口Port三者完全一致与IP地址无关。默认端口可省略浏览器会自动匹配——http协议默认端口为80https协议默认端口为443。例如http://www.example.com 与 http://www.example.com:80 属于同源二者访问时不会触发跨域限制。2. 重定向与跨域的关联重定向是浏览器主动发起的新请求而同源策略限制的是「AJAX/fetch 等脚本发起的请求」并不限制浏览器地址栏的主动跳转。具体来说重定向本身不受同源策略拦截可实现不同源站点的跳转如从自身网站跳转到百度、GitHub等外部网站但重定向后若发起AJAX请求仍需遵循同源策略若不满足同源条件则会被拦截。二、知识点梳理1. 请求转发Forwardvs 重定向Redirect请求转发和重定向是Java Web中页面跳转的两种方式二者在请求机制、访问范围等方面差异显著具体对比如下特性请求转发Forward重定向Redirect请求次数1 次浏览器仅发起1次请求服务器内部转发2 次浏览器发起2次独立请求先请求原地址再跳转目标地址地址栏 URL不变始终显示发起请求的Servlet/Controller地址改变跳转后显示目标地址访问范围仅当前项目内部资源无法访问外部网站可访问任意网络资源同项目、外部网站均可数据传递共享同一个request对象可通过request.setAttribute()传递数据两次请求相互独立无法通过request对象传参可通过Cookie、Session间接传递响应状态码200正常响应由目标资源返回302临时重定向告知浏览器跳转新地址用途示例项目内页面跳转、带数据传递如登录成功后跳转到首页并携带用户信息跨项目跳转、外部网站跳转、防止表单重复提交如提交表单后重定向到结果页2. 同源策略与跨域1同源策略Same-Origin Policy同源策略是浏览器的安全机制目的是防止恶意网站窃取用户敏感数据如Cookie、LocalStorage、DOM内容等限制不同源页面之间的脚本交互。同源策略的限制范围AJAX/fetch 等脚本发起的请求不同源页面之间的DOM访问如iframe嵌套不同源页面无法操作其DOMCookie、LocalStorage、SessionStorage 的读写操作本质隔离不同网站的资源避免A网站的脚本随意操作B网站的内容保障用户访问安全。2同源判定三要素两个URL需同时满足以下三个条件才算同源任意一项不同即为跨域协议Protocol一致如都是http或都是httpshttp与https属于不同源域名/主机Host一致如www.example.com 与 sub.example.com 属于不同源子域名不同端口Port一致如8080与8081属于不同源默认端口http:80、https:443可省略且不影响判定3跨域Cross-Origin当两个URL的协议、域名、端口任意一个不同时就属于跨域访问此时浏览器会触发同源策略拦截脚本发起的请求如AJAX导致请求失败。示例以 http://www.example.com:8080 为基准判断是否跨域https://www.example.com:8080 → 协议不同http vs https跨域http://sub.example.com:8080 → 域名不同主域名 vs 子域名跨域http://www.example.com:8081 → 端口不同8080 vs 8081跨域http://192.168.1.1:8080 → 主机不同域名 vs IP跨域即使IP对应同一个服务器4重定向与跨域的关系重定向是浏览器层面的主动跳转不受同源策略限制可实现不同源站点的跳转如从自己的网站跳转到百度、GitHub等外部网站重定向后的AJAX请求仍受同源策略限制若需正常访问需通过对应跨域解决方案处理。三、常见跨域解决方案实际开发中跨域问题十分常见尤其是前后端分离项目以下是4种主流解决方案结合原理和适用场景整理方便大家按需选择解决方案原理适用场景CORS跨域资源共享服务器通过设置响应头如Access-Control-Allow-Origin明确允许指定源或所有源访问自身资源浏览器检测到该响应头后允许跨域请求。前后端分离项目主流方案支持GET、POST等所有请求方式兼容性好现代浏览器均支持。JSONP利用script标签不受同源策略限制的特性通过动态加载外部脚本将后端返回的数据作为回调函数参数传递给前端。仅支持GET请求兼容性好支持旧版浏览器适合简单跨域数据获取。代理服务器前端不直接请求目标服务器而是请求与自身同源的代理服务器由代理服务器转发请求到目标服务器再将响应结果返回给前端规避同源限制。开发环境如Vue CLI的proxy配置、React的setupProxy快速解决开发阶段的跨域问题。Nginx 反向代理通过配置Nginx服务器将所有前端请求转发到目标服务器统一请求源前端只访问NginxNginx再与目标服务器交互从根源上避免跨域。生产环境部署性能稳定、配置灵活适合正式上线的项目。四、要点总结1. 请求转发与重定向请求转发一次请求地址栏不变仅支持项目内部跳转可通过request对象传递数据响应状态码为200用于项目内带数据的跳转。重定向两次独立请求地址栏会改变可跳转至外部网站或跨项目资源无法通过request传参响应状态码为302用于跨源跳转、防表单重复提交。2. 同源策略与跨域同源协议、域名/主机、端口三者完全一致与IP地址无关、跨域不满足同源条件的访问会被浏览器同源策略拦截主要拦截脚本请求重定向可跨域重定向是浏览器主动跳转不受同源策略限制但重定向后的AJAX请求仍需遵循同源策略注意同源判定以协议、域名、端口为准与IP地址无关即使域名和IP对应同一个服务器也可能属于跨域如localhost和127.0.0.1Java Web中response.sendRedirect()会提交响应后续若再操作response对象如设置响应头、输出内容会抛出异常需注意重定向后及时return请求转发仅支持当前项目内部跳转无法跳转到外部网站仅可访问项目内的Servlet、JSP、Controller等资源。如果觉得有帮助欢迎点赞、收藏关注~

相关文章:

请求转发vs重定向、同源策略与跨域

在Java Web开发和前端交互中,请求转发、重定向与跨域问题是高频考点,也是实际开发中不可或缺的知识点。本文结合表格对比、实例说明,完整梳理三者的逻辑、差异及实用解决方案,帮大家分清易混淆概念,高效应对开发中的相…...

告别‘大块头’SAM!用EfficientSAM在普通显卡上玩转图像分割(附保姆级部署教程)

在消费级显卡上实战EfficientSAM:轻量级图像分割全流程指南 当Meta的SAM(Segment Anything Model)横空出世时,整个计算机视觉社区都为之振奋——这个能够"分割一切"的基础模型展现了前所未有的通用分割能力。但很快&…...

海景美女图-一丹一世界FLUX.1效果展示:日落剪影/夜景海滩/蓝天白云三风格实拍级对比

海景美女图-一丹一世界FLUX.1效果展示:日落剪影/夜景海滩/蓝天白云三风格实拍级对比 1. 引言:当AI画笔遇见海景美人 想象一下,你脑海中浮现出一幅画面:一位优雅的女性,漫步在夕阳下的金色沙滩上,海风轻拂…...

红外波段光子晶体设计避坑指南:CST布里渊区扫描常见错误解析

红外波段光子晶体设计避坑指南:CST布里渊区扫描常见错误解析 在红外波段光子晶体设计中,布里渊区扫描是获取能带结构的关键步骤,但许多工程师在使用CST进行仿真时,常因参数设置不当导致结果失真或计算失败。本文将深入解析220THz红…...

手把手教你:基于DAMOYOLO的实时手机检测模型快速调用

手把手教你:基于DAMOYOLO的实时手机检测模型快速调用 1. 模型简介与核心优势 1.1 DAMOYOLO框架概述 DAMOYOLO是面向工业落地的高性能目标检测框架,其独特设计在精度和速度上超越了传统YOLO系列方法。该框架采用"大颈部、小头部"&#xff08…...

计算机毕业设计:基于Django与Vue的美食菜谱数据分析系统 Django框架 爬虫 机器学习 数据分析 可视化 食物 食品 菜谱(建议收藏)✅

博主介绍:✌全网粉丝10W,前互联网大厂软件研发、集结硕博英豪成立软件开发工作室,专注于计算机相关专业项目实战6年之久,累计开发项目作品上万套。凭借丰富的经验与专业实力,已帮助成千上万的学生顺利毕业,…...

解锁音乐自由:MusicFreeDesktop插件系统完全指南

解锁音乐自由:MusicFreeDesktop插件系统完全指南 【免费下载链接】MusicFreeDesktop 插件化、定制化、无广告的免费音乐播放器 项目地址: https://gitcode.com/gh_mirrors/mu/MusicFreeDesktop MusicFreeDesktop作为一款插件化、定制化的免费音乐播放器&…...

PCL2-CE社区版启动器:用智能管理重塑Minecraft游戏体验,如何让个性化与稳定性兼得?

PCL2-CE社区版启动器:用智能管理重塑Minecraft游戏体验,如何让个性化与稳定性兼得? 【免费下载链接】PCL-CE PCL2 社区版,可体验上游暂未合并的功能 项目地址: https://gitcode.com/gh_mirrors/pc/PCL-CE PCL2-CE社区版启动…...

预算有限必入!4 款高性价比买断制写作软件,学生党低成本搞定全流程写作

在写作成本日益攀升的当下,买断制写作软件凭借 “一次付费、长期使用、无隐性消费” 的优势,成为学生党、自由创作者与职场人的首选。尤其对于预算有限的群体,既能规避订阅制的长期支出,又能解锁全流程写作能力,堪称 “…...

Docker新手必看:FileCodeBox文件快递柜在Ubuntu 22.04上的保姆级部署指南

Docker新手必看:FileCodeBox文件快递柜在Ubuntu 22.04上的保姆级部署指南 在数字化办公日益普及的今天,文件传输已成为日常刚需。想象一下这样的场景:团队协作时需要共享设计稿,异地办公要传递合同文档,或是给客户发送…...

RePKG:Wallpaper Engine资源解锁与转换工具从场景痛点到解决方案

RePKG:Wallpaper Engine资源解锁与转换工具从场景痛点到解决方案 【免费下载链接】repkg Wallpaper engine PKG extractor/TEX to image converter 项目地址: https://gitcode.com/gh_mirrors/re/repkg 一、直面壁纸资源处理的三大痛点 在数字创意与桌面美化…...

AI万能分类器效果展示:中文语义理解能力惊艳的文本分类案例集

AI万能分类器效果展示:中文语义理解能力惊艳的文本分类案例集 1. 开篇:零样本分类的惊艳效果 "这段文字是在投诉还是咨询?"——传统文本分类需要大量标注数据和训练周期,而AI万能分类器给出了全新答案。基于StructBER…...

X-AnyLabeling v2.5.0 深度解析:交互式视觉-文本提示如何重塑通用视觉任务标注范式

1. 交互式视觉-文本提示:标注工具的革命性突破 想象一下这样的场景:你面对一张熙熙攘攘的街景照片,需要标注其中所有"戴帽子的行人"和"红色交通工具"。传统标注工具需要你手动框选每个目标,而X-AnyLabeling v…...

LumiPixel Canvas Quest保姆级教程:使用Docker快速部署与测试

LumiPixel Canvas Quest保姆级教程:使用Docker快速部署与测试 1. 开篇:为什么选择Docker部署? 如果你正在寻找一种快速搭建LumiPixel Canvas Quest环境的方法,Docker绝对是你的首选。想象一下,传统部署方式需要手动安…...

yuzu Switch模拟器终极指南:从零开始到流畅游戏的完整教程

yuzu Switch模拟器终极指南:从零开始到流畅游戏的完整教程 【免费下载链接】yuzu 任天堂 Switch 模拟器 项目地址: https://gitcode.com/GitHub_Trending/yu/yuzu yuzu是目前最受欢迎的开源任天堂Switch模拟器,由Citra模拟器的开发者团队创建。这…...

YOLOv5s训练的1类道路裂缝数据集和代码 该项目包含YOLOv5代码 包括3857张道路裂...

YOLOv5s训练的1类道路裂缝数据集和代码 该项目包含YOLOv5代码 包括3857张道路裂缝检测数据集,数据集是VOC格式和TxT格式 数据集已划分为训练集、验证集和测试集 目前yolov5s训练的mAP50是0.850 代码和数据集在该项目下面 开箱即可使用,开箱即可使用&…...

如何用MidScene.js轻松实现AI驱动的无代码自动化:新手完整指南

如何用MidScene.js轻松实现AI驱动的无代码自动化:新手完整指南 【免费下载链接】midscene Let AI be your browser operator. 项目地址: https://gitcode.com/GitHub_Trending/mid/midscene 你是否厌倦了每天重复点击网页、填写表单的枯燥工作?想…...

图解STGCN:5张流程图搞懂时空图卷积如何预测堵车(比RNN快10倍!)

图解STGCN:5张流程图搞懂时空图卷积如何预测堵车(比RNN快10倍!) 当你在早高峰被堵在高架桥上时,有没有想过AI其实能预判这场拥堵?2018年北大团队提出的STGCN模型,用图卷积门控CNN的"三明治…...

Phi-4-Reasoning-Vision保姆级教程:宽屏界面适配2K/4K显示器的CSS定制技巧

Phi-4-Reasoning-Vision保姆级教程:宽屏界面适配2K/4K显示器的CSS定制技巧 1. 工具简介与适配需求 Phi-4-Reasoning-Vision是基于微软Phi-4-reasoning-vision-15B多模态大模型开发的高性能推理工具,专为双卡4090环境优化。该工具通过Streamlit搭建的宽…...

**神经编码新视角:用Python实现生物启发式神经信号解码与可视化**

神经编码新视角:用Python实现生物启发式神经信号解码与可视化 在人工智能飞速发展的今天,**神经编码(Neural Coding)**正从传统计算模型向生物可解释性方向演进。理解大脑如何将外部刺激转化为电信号,并进一步解码为行…...

Echarts环状饼图交互优化:5个实用技巧让你的数据可视化更丝滑

Echarts环状饼图交互优化:5个实用技巧让你的数据可视化更丝滑 在数据可视化领域,环状饼图因其简洁直观的表现形式,成为展示比例数据的首选方案之一。然而,许多开发者在实现基础功能后,往往忽略了交互体验的打磨。本文将…...

B端拓客号码核验行业现状:困局破解与价值重构氪迹科技法人股东号码筛选核验系统、阶梯式价格

在B端客户拓展的全链条中,企业核心决策层的有效触达是实现合作转化的关键前提,而法人、股东、董监高等核心群体的联系方式,則是搭建这一沟通桥梁的核心载体。作为拓客工作的前置基础性环节,号码核验与筛选的质量、效率&#xff0c…...

3个关键步骤解锁RTX 50系列显卡在IsaacLab机器人仿真中的全部性能

3个关键步骤解锁RTX 50系列显卡在IsaacLab机器人仿真中的全部性能 【免费下载链接】IsaacLab Unified framework for robot learning built on NVIDIA Isaac Sim 项目地址: https://gitcode.com/GitHub_Trending/is/IsaacLab 当NVIDIA RTX 50系列显卡遇上IsaacLab机器人…...

GBase 8a数据库之「穿云箭」:图形化工具GDS解析(上)

一支穿云箭,千军万马来相见。在数据库管理的江湖里,南大通用GBase(gbase database)数据库的GBase Data Studio(简称:GDS)工具正是这样一支“穿云箭”——信号一出,数据响应,集群听令…...

VS Code 终端切换全攻略:从PowerShell到CMD的保姆级教程(附常见问题解决)

VS Code 终端切换全攻略:从PowerShell到CMD的保姆级教程(附常见问题解决) 在Windows开发环境中,终端工具的选择往往直接影响工作效率。VS Code作为开发者最常用的编辑器之一,其内置终端功能强大但默认配置可能并不适合…...

SQL优化新思路:用JSQLParser 4.9实现动态查询条件拼接(避坑指南)

SQL优化新思路:用JSQLParser 4.9实现动态查询条件拼接(避坑指南) 在电商筛选页、CRM系统查询等需要动态构建SQL条件的场景中,字符串拼接方式不仅容易出错,还存在SQL注入风险。JSQLParser 4.9作为Java生态中最强大的SQL…...

突破群晖硬盘限制:Synology HDD db工具全解析

突破群晖硬盘限制:Synology HDD db工具全解析 【免费下载链接】Synology_HDD_db 项目地址: https://gitcode.com/GitHub_Trending/sy/Synology_HDD_db 设备兼容性问题一直是群晖NAS用户面临的主要挑战之一,尤其是第三方硬盘无法识别或无法创建存…...

终极指南:5分钟搭建轻量级Calibre电子书服务器COPS

终极指南:5分钟搭建轻量级Calibre电子书服务器COPS 【免费下载链接】cops Calibre OPDS (and HTML) PHP Server : web-based light alternative to Calibre content server / Calibre2OPDS to serve ebooks (epub, mobi, pdf, ...) 项目地址: https://gitcode.com…...

translategemma-27b-it实战:本地部署图文翻译模型,轻松制作视频字幕

Translategemma-27b-it实战:本地部署图文翻译模型,轻松制作视频字幕 1. 为什么选择translategemma-27b-it做字幕翻译 视频字幕制作一直是内容创作者面临的挑战。传统方法需要先提取视频中的文字,再使用翻译工具处理,整个过程繁琐…...

人工智能课程设计:基于 Lingbot 模型的单目深度估计实验

人工智能课程设计:基于 Lingbot 模型的单目深度估计实验 想让《人工智能》或《计算机视觉》课程不再只是纸上谈兵吗?单目深度估计,这个让计算机从一张图片“猜”出三维距离的技术,正是连接理论算法与真实世界感知的绝佳桥梁。它不…...