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

微信息公众平台微网站建设wordpress的ping

微信息公众平台微网站建设,wordpress的ping,网站系统建设合同范本,微商分销模式有哪些本文仅是记录一下开发碰到的问题,不确定百分百有效。 跨域是什么意思? 跨域问题的根本原因在于浏览器的 同源策略(Same-Origin Policy) 和 跨域资源共享(CORS,Cross-Origin Resource Sharing)…

本文仅是记录一下开发碰到的问题,不确定百分百有效。

跨域是什么意思?

跨域问题的根本原因在于浏览器的 同源策略(Same-Origin Policy)跨域资源共享(CORS,Cross-Origin Resource Sharing)机制 的限制

也就是你需要满足三点要求就不会跨域,任意一点不满足就会跨域

  • 协议相同(如 http 或 https)。
  • 域名相同(如 example.com)。
  • 端口号相同(如 80 或 443)。

通常来说跨域在配置文件继承WebMvcConfiguration的类中重写addCorsMappings方法就可以解决

    @Overridepublic void addCorsMappings(CorsRegistry registry) {registry.addMapping("/**") // 对所有路径生效.allowedOriginPatterns("*")//.allowedOrigins("*") // 允许的域名.allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS") // 允许的 HTTP 方法.allowedHeaders("*") // 允许的请求头.allowCredentials(true) // 是否允许发送 Cookie.maxAge(3600); // 预检请求的有效期(单位:秒)}
  • 浏览器在发送跨域请求时,默认只允许使用以下标准请求头:
    • Accept
    • Accept-Language
    • Content-Language
    • Content-Type(仅限于 application/x-www-form-urlencodedmultipart/form-data 和 text/plain 类型)
  • 如果前端在跨域请求中添加了自定义请求头(如 Access-TokenX-Custom-Header),浏览器会认为这是一个 非简单请求(Non-Simple Request)
  • 对于非简单请求,浏览器会在实际发送请求之前,先发送一个 预检请求(Preflight Request)(HTTP 方法为 OPTIONS),以确认服务器是否允许该请求
  • 只有当服务器返回正确的 CORS 响应头,允许这些内容时,浏览器才会继续发送实际请求
  • 如果服务器未正确处理预检请求(如未返回 Access-Control-Allow-Headers 或未允许自定义请求头),浏览器会拒绝发送实际请求,并抛出跨域错误

我也在继承WebSecurityConfigurerAdapter的配置类加上了configure方法,但仍然跨域

    @Overrideprotected void configure(HttpSecurity httpSecurity) throws Exception {httpSecurity.cors().and() // 显式启用 CORS 支持.csrf().disable().sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS).and().authorizeRequests().antMatchers(HttpMethod.OPTIONS, "/**").permitAll() // 放行 OPTIONS 请求.anyRequest().authenticated();}

最后解决办法是,定义了一个跨域过滤器

import org.springframework.stereotype.Component;import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;/*** @Author: Desmond* @CreateTime: 2025-04-20* @Description: 跨域过滤器*/
@Component
public class CorsFilter implements Filter {@Overridepublic void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {HttpServletRequest request = (HttpServletRequest) req;HttpServletResponse response = (HttpServletResponse) res;// 允许的域名(根据实际需求修改)String origin = request.getHeader("Origin");response.setHeader("Access-Control-Allow-Origin", origin); // 动态设置允许的域名response.setHeader("Access-Control-Allow-Credentials", "true"); // 允许携带凭据response.setHeader("Access-Control-Allow-Methods", "POST, GET, PATCH, DELETE, PUT, OPTIONS"); // 允许的 HTTP 方法response.setHeader("Access-Control-Max-Age", "3600"); // 预检请求的有效期response.setHeader("Access-Control-Allow-Headers", "Access-Token, Content-Type, Token, Origin, X-Requested-With, Accept"); // 允许的请求头// 处理 OPTIONS 请求(预检请求)if ("OPTIONS".equalsIgnoreCase(request.getMethod())) {response.setStatus(HttpServletResponse.SC_OK); // 返回 200 OKreturn;}// 继续处理其他请求chain.doFilter(req, res);}@Overridepublic void init(FilterConfig filterConfig) throws ServletException {// 初始化逻辑(如果需要)}@Overridepublic void destroy() {// 销毁逻辑(如果需要)}
}

在setHeader中,添加自己的自定义请求头,重启服务发现前端携带请求头可以正常访问了。

http://www.dtcms.com/wzjs/589770.html

相关文章:

  • 如何介绍自己做的网站建立网站的链接结构有哪几种形式简述其各自的优缺点
  • 怎么查询最新网站兰州网站运营
  • 企业手机网站 案例网站备案跟做哪个推广有关系吗
  • 自学网站平面设计typecho做网站
  • 电脑如何做ppt模板下载网站小程序代理公司
  • 深圳品牌网站建设公司有哪些企业网站如何上存
  • 网站开发流程丽江免费商城版网站制作
  • 做网站需要竞品分析么拓者设计吧电脑版
  • pc网站是什么西安做网站魔盒
  • 网站建设zgkr无锡有人代做淘宝网站吗
  • 自己做的网站怎么查福州市网站建设公司
  • 深圳市南山区住房和建设局官方网站wordpress炫酷网页
  • 全国门户网站有哪些广州学生做网站
  • 网站建设区别广州注册公司代理
  • 千万不要报培训班学室内设计天津做网站优化价格
  • 宠物网站设计的代码北京微信网站建设公司
  • 防网站模板微信自建小程序
  • 企业网站需要什么深州市住房保障和城乡建设局网站
  • html 网站源码 卖手机核心关键词和长尾关键词举例
  • 知道源代码如何做网站dedecms 网站安装教程
  • 如何查看网站的更新频率网站建设公司 华艺网络
  • 商丘网站建设方案昆明市门户网站
  • 单页面网站无锡网络营销推广公司
  • 长沙做企业网站推广的公司湖南宣传片制作公司
  • 电子商务网站接口费率企业网站开发用什么软件
  • 网站架构的优化wamp做的网站外网怎么访问不了
  • 科技公司主要经营什么知乎seo
  • 网页设计与网站建设全攻略上海临平路网站建设
  • 网站上线 文案龙岩做网站改版一般多久
  • 兴义哪有做网站免费网站免费无遮挡