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

主流网站宽度网站定制化服务

主流网站宽度,网站定制化服务,制作网站软件不懂代码可以制作吗,福州网站建设 找燕狂徒 04跨域问题在前后端分离架构下尤为常见#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/14566220/

相关文章:

  • 郑州网站推广信息免费建简单网站
  • 四川煤矿标准化建设网站网站设计规划的目的和要求
  • 设计师图库网站天创网站
  • 做如美团式网站要多少钱网站建设及上线流程
  • 大连网站关键词推广东莞保安公司有哪些
  • 网站规划与设计范文wordpress ip排行榜
  • 电商首页模板网站成立公司需要多少费用
  • o2o网站线上对网站界面设计起决定性作用的是
  • 俄罗斯网站建设公司wordpress伪原创设置
  • 做彩票网站要多少钱上海网站备案拍照地点
  • 云南网站建设公司有哪些优化大师win7
  • 直播网站app开发网络营销用什么软件
  • 大学生创业服务网站建设方案适合夜里看的php
  • 临安网站建设公司获取免费域名
  • 购物网站开发设计什么网站可以做认证
  • wordpress网站mip改造网站怎么增加关键词库
  • 建设网站的公司哪家好网站的后台在哪儿
  • 酒店网站解决方案珠海网络公司排名
  • 温州 网站制作中国网站建设排名
  • 长治门户网站免费三折页宣传册模板下载网
  • 网站全局搜索产品创新设计案例
  • 织梦 音乐网站wordpress后台修改默认主题
  • 江苏越润建设有限公司网站深圳网站优化页面
  • 信息公开和网站建设工作总结在线文档 wordpress
  • 短租网站那家做的好处wordpress主体功能对比
  • 网站手机验证码注册怎么做湖南建设人力资源湖南网站建设
  • php mysql网站开发全程实例.pdf新余建网站
  • 百度网站域名注册网站开发和软件开发的区别
  • 建站记录查询微信管理
  • dw网站的站点建设微信游戏网站开发