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

网站建设期中考试题网站改版域名不变

网站建设期中考试题,网站改版域名不变,定制柜子多少钱一平方,200万做网站跨域问题在前后端分离架构下尤为常见#xff0c;是每个 Web 开发者都会遇到的核心问题。本文将通过原理解析、场景剖析、解决方案详解以及最佳实践等多个维度#xff0c;帮助开发者全面理解并有效应对跨域问题。 目录 **一、跨域的本质****1. 同源策略****2. 同源策略的限制范…跨域问题在前后端分离架构下尤为常见是每个 Web 开发者都会遇到的核心问题。本文将通过原理解析、场景剖析、解决方案详解以及最佳实践等多个维度帮助开发者全面理解并有效应对跨域问题。 目录 **一、跨域的本质****1. 同源策略****2. 同源策略的限制范围****3. 为什么需要同源策略** **二、跨域问题的常见场景****1. 前后端分离****2. 第三方服务调用****3. 静态资源加载****4. 跨协议请求** **三、跨域的解决方案详解****1. CORS跨域资源共享****CORS 在 Spring Boot 中的配置** **2. 代理服务器转发****3. JSONP仅支持 GET 请求****4. iframe postMessage****5. 后端设置 JSONP API** **四、最佳实践****五、总结** 一、跨域的本质 1. 同源策略 跨域问题的根本源于浏览器的同源策略Same-Origin Policy。同源策略是浏览器的一种安全机制用于限制不同源的文档或脚本如何彼此交互以保护用户的数据安全。 同源的定义协议、域名、端口号必须一致。 属性示例 1示例 2是否同源协议http://example.comhttps://example.com否域名http://example.comhttp://api.example.com否端口号http://example.com:80http://example.com:8080否 2. 同源策略的限制范围 同源策略主要限制以下行为 Cookie、LocalStorage 和 SessionStorage 的读取DOM 和 JavaScript 对象的访问AJAX 请求尤其是跨域数据的访问 3. 为什么需要同源策略 同源策略主要是为了防止以下安全风险 跨站脚本攻击XSS恶意页面通过脚本窃取用户数据。跨站请求伪造CSRF利用用户身份对目标网站执行未授权操作。数据劫持防止不受信任的域窃取敏感信息。 二、跨域问题的常见场景 1. 前后端分离 现代 Web 应用通常采用前后端分离架构前端通过 AJAX 请求与后端进行交互。当前端和后端运行在不同的域时会触发跨域问题。例如 前端http://localhost:3000后端http://localhost:8080 2. 第三方服务调用 前端需要请求第三方 API例如调用 https://api.example.com 提供的开放服务这种场景也会引发跨域问题。 3. 静态资源加载 页面运行在 http://example.com而静态资源托管在 CDN如 https://cdn.example.com上。 4. 跨协议请求 例如从 HTTP 页面调用 HTTPS 服务。 三、跨域的解决方案详解 1. CORS跨域资源共享 CORS 是 W3C 提出的标准解决方案允许服务端通过设置特定的响应头告知浏览器允许跨域访问。 CORS 的关键响应头 Access-Control-Allow-Origin允许的源如 http://example.com或 * 代表允许所有源。Access-Control-Allow-Methods允许的 HTTP 方法如 GET, POST。Access-Control-Allow-Headers允许的自定义请求头如 Authorization。Access-Control-Allow-Credentials是否允许携带凭证如 Cookie。Access-Control-Max-Age预检请求的缓存时间。 CORS 在 Spring Boot 中的配置 Spring Boot 提供了多种方式支持 CORS 全局配置 使用 WebMvcConfigurer 添加全局的 CORS 配置。 Configuration public class WebConfig implements WebMvcConfigurer {Overridepublic void addCorsMappings(CorsRegistry registry) {registry.addMapping(/**).allowedOrigins(http://example.com).allowedMethods(GET, POST, PUT, DELETE).allowedHeaders(*).allowCredentials(true).maxAge(3600);} }局部配置 在控制器类或方法上使用 CrossOrigin 注解。 RestController RequestMapping(/api) public class MyController {CrossOrigin(origins http://example.com)GetMapping(/data)public ResponseEntityString getData() {return ResponseEntity.ok(Hello, World!);} }通过过滤器统一配置 使用 OncePerRequestFilter 创建全局 CORS 过滤器。 Component public class CORSFilter extends OncePerRequestFilter {Overrideprotected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)throws ServletException, IOException {response.setHeader(Access-Control-Allow-Origin, *);response.setHeader(Access-Control-Allow-Methods, GET, POST, PUT, DELETE);response.setHeader(Access-Control-Allow-Headers, Content-Type, Authorization);response.setHeader(Access-Control-Allow-Credentials, true);filterChain.doFilter(request, response);} }2. 代理服务器转发 通过代理服务器将跨域请求转发为同源请求避免跨域问题。 开发环境中的前端代理 React 配置代理{proxy: http://localhost:8080 }Vue 配置代理module.exports {devServer: {proxy: {/api: {target: http://localhost:8080,changeOrigin: true,pathRewrite: { ^/api: }}}} };Nginx 反向代理 server {listen 80;server_name example.com;location /api/ {proxy_pass http://backend-service:8080;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;} }3. JSONP仅支持 GET 请求 通过 script 标签加载远程数据并利用回调函数实现跨域通信。 前端调用示例 scriptfunction handleResponse(data) {console.log(data);} /script script srchttp://example.com/api?callbackhandleResponse/script后端返回数据 handleResponse({message: success});4. iframe postMessage 通过嵌入跨域的 iframe并使用 postMessage 方法实现通信。 父页面代码const iframe document.getElementById(myIframe); iframe.contentWindow.postMessage(hello, http://example.com);window.addEventListener(message, (event) {if (event.origin http://example.com) {console.log(event.data);} });5. 后端设置 JSONP API 在后端返回一个 JavaScript 函数的调用来传递数据这种方法兼容性较好但仅适用于简单场景。 四、最佳实践 安全性 指定可信任的跨域源不建议使用通配符*。对敏感数据接口加强认证和授权控制。 性能优化 使用 Access-Control-Max-Age 缓存预检请求结果。减少跨域请求次数合并或延迟请求。 复杂场景下的组合解决方案 开发阶段使用前端代理生产环境使用 Nginx 反向代理。配合 CORS 配置和全局过滤器处理复杂跨域请求。 五、总结 跨域问题是浏览器同源策略带来的限制其根本目的是保护用户数据安全。通过 CORS 配置、全局过滤器、代理服务器等方法可以灵活解决不同场景下的跨域问题。在实际开发中应结合项目需求选择最合适的解决方案同时注重安全性和性能优化从而构建更高效、更安全的 Web 应用。
http://www.hkea.cn/news/14471770/

相关文章:

  • 城市建设最好的网站查询网站whois
  • 网站建设最常见的问题网站建设方案书怎么签字上传
  • 网站后台管理员密码云南省建设厅网站舉報
  • 门户网站开发研究报告wordpress多种设备网页生成
  • 临安区规划建设局网站网页制作的收获与体会
  • wordpress 建网站视频电脑做h5的软件有哪些
  • 深圳网站建设怎么样广东人才网
  • 山东华泰建设集团有限公司官方网站软件代理网
  • 高密做网站的价位wordpress硬件条件
  • 纯php网站开发的网站国际贸易平台有哪些
  • 企业网站留言板深圳百度竞价推广
  • 凡科专属网站免费注册有内涵的公司名
  • 推广网站可以做跳转吗网站推广的效果
  • 西安未央区今天出啥事了上海网站seo诊断
  • 营销型网站的建设重点是什么网站主机的选择与优化
  • 防水补漏东莞网站建设网站建设及维护服务器
  • 域名注册哪个网站好淄博优化推广
  • 网站怎么做充值系统下载湘潭做网站 z磐石网络
  • 武安市精品网站开发网站上的图标用什么软件做的
  • 网上做衣服的网站磁力天堂最佳搜索引擎入口
  • 个人网站推广广告如何编写网站建设销售的心得
  • 站长工具综合查询系统苏州企业网站建
  • 深圳网站建设技术拖拽式网站建设
  • 营销型网站文案怎么做网站建设的报告
  • 厦门高端网站建设公软件项目和网站建设的区别
  • 58同城石家庄网站建设哪个公司的卡网络最好
  • 一个网站做多访问量ps教程自学网新手教程详细步骤
  • 网站建设的方案图片企业运营系统
  • 网站建设先进技术出格做网站
  • 上海史特做网站多少钱wordpress直播主题