首页 > 其他分享 >架构设计-web项目中跨域问题涉及到的后端和前端配置

架构设计-web项目中跨域问题涉及到的后端和前端配置

时间:2024-06-10 16:31:32浏览次数:27  
标签:架构设计 跨域 origins web 前端 allowCredentials cookie true

WEB软件项目中经常会遇到跨域问题,解决方案早已是业内的共识,简要记录主流的处理方式:

跨域感知session需要解决两个问题:

1. 跨域问题

2. 跨域cookie传输问题

跨域问题

解决跨域问题有很多种方式,如使用springboot自带的crossOrigin注解

@CrossOrigin(origins = {"*"}, allowedHeaders = "*")

添加这个注解后,所有的http response头上都会加上
Access-Control-Allow-Origin * 以及
Access-Control-Allow-Headers * 两个头部,这样可以满足CORS的跨域定义,前端看到这两个头部就认定对应的域名接收任何来自或不来自于本域的请求

跨域传递cookie的问题

跨域和跨域传递cookie是两个不同纬度的问题,如果要做到跨域感知session的前提下将cookie也能传上去,这个时候就需要设置另外一个头部。

@CrossOrigin(origins = {"*"}, allowCredentials = "true", allowedHeaders = "*")

使用了 allowCredentials 后 Access-Control-Allow-Credentials 头被设置成 true,同时前端设置xhrField:{withCredential:true} 后,浏览器在前端网络请求内带上对应的 cookie 头部和后端的allowCredentials 配合在一起解决跨域传递 cookie 的问题。如果项目中只使用了get、post方法,而这两个方法在跨域请求中都是可以用的,allowedHeaders 可以不加。

另外当设置了 allowCredentials = “true" 时,origins = {”*"} 就失效了,因为一旦设置了跨域传递cookie 就不能再设置接受任何 origins,而 springboot 的实现方式是返回的 allow origin 取request内的 origin,即前端 html 页面路径。这样就可以实现允许使用了跨域的 origin。

注意:许多浏览器 (safari和最新版本的 chrome) 默认设置不支持携带跨域 cookie,即便代码写成允许,浏览器底层也做了限制,因此在调试的时候可以关闭对应的限制,也可以使用其他跨域处理方式。

标签:架构设计,跨域,origins,web,前端,allowCredentials,cookie,true
From: https://blog.csdn.net/suiusoar/article/details/139578111

相关文章

  • idea Webstorm Pycharm2024最新版 永久使用教程 附激活码亲测可用2099年
    IDEA2024的激活与安装(全网最靠谱,最快捷的方式)大家都在为使用IDEA需要收费而烦恼。IDEA,即IntelliJIDEA,是一款强大的集成开发环境,广泛应用于Java开发。但是IDEA是付费的,免费版功能有太少,怎么才能既免费,又能使用上正式版呢!当然还是激活啦(不是正版用不起,而是‘激活’更有性价比)......
  • 1900springboot VUE 生态菜园管理系统开发mysql数据库web结构java编程计算机网页源码m
    一、源码特点 springbootVUE生态菜园管理系统是一套完善的完整信息管理类型系统,结合springboot框架和VUE完成本系统,对理解JSPjava编程开发语言有帮助系统采用springboot框架(MVC模式开发),系统具有完整的源代码和数据库,系统主要采用B/S模式开发。前段主要技术vue 后端主......
  • web入门(1)---6.10
    总结:多做一点NSSCTF的新手赛,了解基本题型,然后打牢基础知识谢队讲解攻防世界Web入门题讲解_哔哩哔哩_bilibili题目来源:攻防世界新手区1.view_source查看源代码2.get_post收获:get方法是直接在url网址后面?a=1这样发送请求post是点击postdate3.robots收获:ro......
  • web服务器性能测试
    web服务器性能测试记录使用Apache-bench、http_load、httperf等工具测试web服务器的性能。1.ab测试#CentOS安装$yum-yinstallhttpd-tools#Ubuntu安装$sudoapt-getinstallapache2-utils#测试,-n访问的总次数,-c访问的并发量$ab-n1000000-c100http://x.......
  • WebLogic XMLDecoder反序列化漏洞
    目录前言XMLDecoder概述XMLDecoder反序列化漏洞漏洞复现前言上篇复现了T3反序列化漏洞,XMLDecoder反序列化在WebLogic中也是一类影响很大的反序化漏洞。XMLDecoder概述XMLDecoder是JDK自带的以SAX方式解析xml的类,实现java对象和xml文件之间的转化。其中序列化过程是将java对象......
  • TouchSocke 中使用WebSocket的快捷事务命令行
    1、效果2、开发环境:    2.1、NetFramework4.5    21.2、NuGet中安装TouchSocket2.0.0、TouchSocket.Core2.0.0、TouchSocket.Http2.0.0如下图。3、代码如下usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Tex......
  • 软考 系统架构设计师系列知识点之杂项集萃(32)
    接前一篇文章:软考系统架构设计师系列知识点之杂项集萃(31)第51题网络逻辑结构设计的内容不包括()。A.逻辑网络设计图B.IP地址方案C.具体的软硬件、广域网连接和基本服务D.用户培训计划正确答案:D。所属知识点:旧版教材计算机网络->网络规划与设计解析:逻辑网络设计......
  • 软考 系统架构设计师系列知识点之杂项集萃(33)
    接前一篇文章:软考系统架构设计师系列知识点之杂项集萃(32)第53题企业信息集成按照组织范围分为企业内部的信息集成和企业外部的信息集成。在企业内部的信息集成中,()实现了不同系统之间的互操作,使得不同系统之间能够实现数据和方法的共享;()实现了不同应用系统之间的连接、协调运......
  • Javaweb01-HTTP协议
    HTTP协议1.HTTP协议概述定义与作用HTTP是超文本传输协议,用于定义服务端和客户端之间交换数据的过程和数据本身的的格式,同时HTTP是一种请求/响应式的协议,是一种应用层的协议优点支持客户端和服务器模式简单快速,通过Http请求和Http响应加快通信允许传输任意类型的数据,......
  • 【JavaWeb入门】了解HTTP
    HTTP协议简介超文本传输协议(英文:HyperText Transfer Protocol,缩写:HTTP)是一种用于分布式、协作式和超媒体信息系统的应用层协议。HTTP是万维网的数据通信的基础。HTTP的发展是由蒂姆·伯纳斯-李于1989年在欧洲核子研究组织(CERN)所发起。HTTP的标准制定由万维网协会(World Wi......