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

怎样做网站推销产品微信视频号可以推广吗

怎样做网站推销产品,微信视频号可以推广吗,二建专业有哪些专业,一个动态网站多少钱文章目录 一,跨域问题1,跨域问题产生的原因2,预检请求3,跨域解决方案3.1 CORS (Cross-Origin Resource Sharing)后端配置示例(Spring Boot) 3.2 JSONP (JSON with Padding)3.3 代理服务器Nginx代理配置示例…

文章目录

  • 一,跨域问题
    • 1,跨域问题产生的原因
    • 2,预检请求
    • 3,跨域解决方案
      • 3.1 CORS (Cross-Origin Resource Sharing)
        • 后端配置示例(Spring Boot)
      • 3.2 JSONP (JSON with Padding)
      • 3.3 代理服务器
        • Nginx代理配置示例
      • 3.4 Server-Side Proxy (后端代理)
      • 3.5 使用WebSocket
      • 3.6 PostMessage API
      • 3.7 CORS Anywhere
  • 二,解决方案

一,跨域问题

当上一节设置好通过网关转发请求后,点击登录按钮,无法登录。

浏览器控制台有报错信息,如下。

在这里插入图片描述

图上的信息表明出现了跨域问题

跨域问题是Web开发中常见的问题,尤其在前后端分离的架构中更为突出。

以“谷粒商城”为例,前端应用和后端服务部署分开部署,端口号不同。当前端应用尝试从后端API请求数据时,就会遇到跨域问题。

1,跨域问题产生的原因

浏览器出于安全考虑,实施了同源策略(Same-Origin Policy)。

根据同源策略,来自不同源(协议、域名、端口任意一项不同即视为不同源)的HTTP请求被限制,不能相互读取或写入对方的资源。

一定要协议、域名或者IP、端口都一致时,才不会被同源策略限制,可参考下面列表。

在这里插入图片描述

上面的例子中,首先访问前端项目,端口是8001,打开登录界面后,点击登录,登录接口会发给网关,网关的端口是80,根据同源策略,端口不同不允许访问,会被浏览器限制访问。

2,预检请求

在这里插入图片描述

上面图片中的OPTIONS,说明这个请求是个预检请求。

为什么需要预检请求呢?

原因是同源策略是浏览器的安全策略,在不同源的情况下,服务器端如果允许跨域的话,浏览器仍然可以发出跨域请求。

如果不同源,浏览器先发送一个轻量级的预检请求,询问服务器是否允许跨域访问,如果允许跨域访问,才会真正的发出请求。

在这里插入图片描述

上图图描述了非简单请求(如PUT、DELETE等)的跨域过程,具体来说,这是一个典型的CORS(Cross-Origin Resource Sharing)预检请求的过程。下面是详细的解释:

  1. 预检请求,OPTIONS
    浏览器发送一个预检请求(OPTIONS),询问服务器是否允许跨域请求。这个请求带有特殊的HTTP头,比如Origin表示请求来源的URL,以及Access-Control-Request-Method表示实际请求将使用的HTTP方法。

  2. 响应允许跨域
    服务器收到预检请求后,检查请求头,如果满足条件(如允许的源、方法、请求头等),则返回一个成功的响应,包含Access-Control-Allow-OriginAccess-Control-Allow-MethodsAccess-Control-Allow-Headers等头,表明允许跨域请求。如果服务器不允许跨域,则返回一个失败的响应。

  3. 发送真实请求
    如果预检请求得到允许,浏览器才会发送真实的HTTP请求(如PUT或DELETE),携带实际的数据。

  4. 响应数据
    服务器处理完请求后,返回响应数据。此时,响应头中应包含Access-Control-Allow-Origin等头,确认允许跨域。

这个过程是为了保护用户的安全,防止恶意网站窃取敏感数据。只有在预检请求得到允许后,浏览器才会发送真正的请求。对于简单请求(如GET、POST),浏览器可以直接发送,不需要预检请求。但对于非简单请求,浏览器必须先验证服务器是否允许跨域,以确保用户的隐私和安全。

3,跨域解决方案

只要浏览器允许跨域,浏览器就可以发出跨域请求。

解决跨域问题的常见方法有以下几种:

3.1 CORS (Cross-Origin Resource Sharing)

CORS 是一种最常用的跨域解决方案,允许服务器通过响应头来指定哪些源可以访问其资源。

服务器需要在响应中添加Access-Control-Allow-Origin头来指明哪些源可以访问资源。

此外,还可以设置Access-Control-Allow-MethodsAccess-Control-Allow-HeadersAccess-Control-Allow-Credentials等头来细化跨域访问的控制。

后端配置示例(Spring Boot)
@Configuration
public class CorsConfig implements WebMvcConfigurer {@Overridepublic void addCorsMappings(CorsRegistry registry) {registry.addMapping("/**").allowedOrigins("*") // 或指定的源.allowedMethods("GET", "POST", "PUT", "DELETE").allowedHeaders("*").allowCredentials(false).maxAge(3600);}
}

3.2 JSONP (JSON with Padding)

JSONP是一种用于绕过同源策略的技巧,但它仅限于GET请求。前端向服务器发送一个GET请求,服务器将数据包裹在回调函数中返回。这种方式的安全性较低,且不支持POST等其他HTTP方法。

3.3 代理服务器

通过设置一个代理服务器(如Nginx或Node.js的Express应用),前端向代理服务器发送请求,代理服务器再向实际的后端API发送请求。这样前端和后端看似在同一源下通信,绕过了同源策略的限制。

Nginx代理配置示例
location /api/ {proxy_pass http://backend_server;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;
}

3.4 Server-Side Proxy (后端代理)

在后端API中添加逻辑,将请求转发到另一个源。这通常用于微服务架构中,一个服务充当其他服务的代理。

3.5 使用WebSocket

WebSocket协议不受同源策略的限制,可以用于建立持久的双向通信通道,适用于实时数据传输场景。

3.6 PostMessage API

HTML5引入的postMessageAPI允许不同源的窗口之间进行安全通信,通常用于iframe之间的通信。

3.7 CORS Anywhere

CORS Anywhere是一个开源的Node.js中间件,可以作为代理服务器,自动添加CORS响应头,使得任何源都可以访问资源。但它可能涉及安全和隐私问题,应当谨慎使用。

我们采用第一种方案。

二,解决方案

考虑到所有的请求都会经过网关,所以可以在网关设置允许跨域,这样就不需要在每一个服务都进行跨域配置了。

我们通过创建一个配置类,在配置类中创建一个过滤器,过滤器给经过的所有请求的请求头加上允许跨域的信息。

在这里插入图片描述

配置类代码如下。

package com.atguigu.gulimall.gateway.config;import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.reactive.CorsWebFilter;
import org.springframework.web.cors.reactive.UrlBasedCorsConfigurationSource;@Configuration
public class GulimallCorsConfiguration {@Beanpublic CorsWebFilter corsWebFilter(){UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();CorsConfiguration corsConfiguration = new CorsConfiguration();//1、配置跨域corsConfiguration.addAllowedHeader("*");corsConfiguration.addAllowedMethod("*");corsConfiguration.addAllowedOriginPattern("*");corsConfiguration.setAllowCredentials(true);source.registerCorsConfiguration("/**",corsConfiguration);return new CorsWebFilter(source);}
}

经过这样设置之后,再次操作,就顺利登录了。

http://www.tj-hxxt.cn/news/23667.html

相关文章:

  • 网站注入木马sem竞价代运营公司
  • 做问卷调查赚钱好的21个网站各地疫情最新消息
  • 武汉做网站的价格专业搜索引擎seo服务
  • 移动互联网的主要特点hyein seo是什么牌子
  • 网站建设培训班学费刷关键词要刷大词吗
  • 开发公司维保期内维修流程谷歌seo网络公司
  • 团队网站源码关系网站优化公司
  • 手机端网站建站流程深圳网络营销推广
  • 北京网站建设优化网络推广优化seo
  • 购物系统搜索引擎优化的含义
  • 美国建设工程标准下载网站河南省最新通知
  • mvc5 网站开发之学 pdf千万别在百度上搜别人名字
  • 天猫出售网站seo优化工具
  • 阿里云网站主体变更怎么做百度提交网站的入口地址
  • 门户网站开发平台网络营销策略优化
  • 书画艺术网站建设概况杭州专业seo服务公司
  • 大型网站建设制作百度知道
  • 网站类别标签文本搜索引擎优化方法包括
  • 个人做外贸网站平台流量推广平台
  • 网站打开速度进行检测关键词搜索优化公司
  • 如何进行网站改版设计如何建立个人网站的步骤
  • 商品小程序怎么制作优化推广排名网站教程
  • 房管局 网站做房查购物网站有哪些
  • 蓝天使网站建设推广电商线上推广
  • 大型做网站的公司seo人工智能
  • 做公司网站每年多少钱网站推广专家
  • 软件介绍网站模板自媒体视频剪辑培训班
  • 青海省wap网站建设公司磁力吧
  • 整个局域网都无法访问wordpress重庆seo论坛
  • 做详情页哪个网站好中国最大的企业培训公司