首页 > 其他分享 >preflight 错误,但服务端告诉你已经设置过了 CORS 信息怎么办

preflight 错误,但服务端告诉你已经设置过了 CORS 信息怎么办

时间:2024-06-22 17:54:15浏览次数:17  
标签:axios 请求 preflight 设置 CORS 服务端

开发过程遇到一个问题

异步去一个 cdn 上请求一个自定义 JSON 格式的文件报了一个 preflight 错误

has been blocked by CORS policy: Response to preflight request doesn't pass access control check: It does not have HTTP ok status

但当我在开发者工具内直接使用 fetch(url) 去请求这个文件时却可以正常返回。

服务端开发人员告诉我已经设置过允许跨域的信息了..

查了一下资料发现,当请求是非“简单”请求时,浏览器会先触发预检测 pre-flgith, 就是我们常在异步请求前看到的 OPTIONS 请求

Request Method: OPTIONS

所以当遇到 preflight 错误时,会感受到浏览器完全没有发起任何请求,就报错。

分析原因: 我当前项目中的所有请求都由 axios 做了拦截层,会带上自定义的信息比如授权的 token 版本号等。且 header 是以 application/json 格式返回

所以我项目中的所有请求都是非 “简单” 请求

解决方案

调整 axios 请求的配置,避免发送预检请求:

  1. 确保不使用任何会触发预检的请求方法(如 PUT, DELETE, CONNECT 等)。
  2. 避免在请求中设置任何非简单请求头部。

将 Content-Type 设置为 text/plain,或不设置,直接使用 fetch(url)

如果是 axios 可以像下面这样尝试:

axios.get('http://example.com/data.json', {
  headers: {
    'Content-Type': 'text/plain'
  }
})

标签:axios,请求,preflight,设置,CORS,服务端
From: https://www.cnblogs.com/willian/p/18262566

相关文章

  • 转:文件的断点下载服务端
    原文地址:https://www.yuque.com/yss930819/guqz9f/aly0lzgolang#代码片段#文件服务#下载#goframe文件的断点续传,需要使用到HTTP协议的206状态码实现文件的断点续传,具体的原理在网上可以找到一堆。网上找的所有golang代码都缺少一个步骤flush即将文件的内容写入后应......
  • JAVA SSE 服务端单向消息通知
    工作记录关于只需要服务端向web端单向通知的技术SSE的技术落地总结最近有个需求是关于消息的单向通知,原本考虑用websocket,但是技术经理认为太重,建议采用SSE.查阅相关技术后结合实际业务需要新建了一个工具类@Component@Slf4jpublicclassSSEUtils{privatefinalMap<......
  • redis自学(47)服务端优化
    持久化配置Redis的持久化虽然可以保证数据安全,但也会带来很多额外的开销,因此持久化请遵循下列建议:①用来做缓存的redis实例尽量不要开启持久化功能②建议关闭RDB持久化功能,使用AOF持久化(RDB的数据安全性一直是有问题的,两次RDB的时间比较长,又不能频繁的RDB,因为耗时久而且需......
  • 深入探索WebKit中的跨域资源共享(CORS)实现
    跨域资源共享(CORS)是一个安全协议,允许不同源之间的资源共享。在现代Web应用中,CORS对于实现WebAPI调用、Ajax跨域请求等至关重要。WebKit作为广泛使用的浏览器引擎之一,其对CORS的支持直接影响到Web应用的跨域交互能力。本文将深入探讨WebKit如何实现CORS,以及这一机制对开发者......
  • 搭建服务端性能监控系统 Prometheus 详细指南
    前言在现代软件开发中,性能监控是确保系统稳定性和性能优化的重要环节。Prometheus是一个开源的系统监控和报警工具,广泛用于容器化环境和微服务架构。本指南将详细介绍如何在服务器上搭建Prometheus性能监控系统。安装Prometheus环境准备确保你的服务器上已经安装了以下......
  • 服务端渲染(SSR): 了解Vue的服务端渲染能力,以及它如何帮助改善SEO和提升首屏渲染速度
    一、介绍服务端渲染(SSR)定义和作用 服务端渲染(ServerSideRendering,简称SSR)是一种流行的渲染页面的方法,它主要是在服务器上执行页面的初始化渲染,生成全量的HTML,并把这些HTML发送给客户端。换句话说,服务器已经预先生成好了页面的标记并发送到客户端,客户端只需要填充......
  • Spring (63)CORS,如何在Spring中配置它
    CORS简介CORS(Cross-OriginResourceSharing,跨源资源共享)是一种机制,它使用额外的HTTP头来告诉浏览器让运行在一个origin(源)上的Web应用被准许访问来自不同源服务器上的指定资源。当一个资源从与该资源本身不同的域、协议或端口请求一个资源时,资源会发起一个跨域HTTP请求。C......
  • Django 解决 CORS 跨域问题
    Django解决CORS跨域问题★CORS基本概念CORS(Cross-OriginResourceSharing跨域资源共享)是一种用于在Web浏览器中处理跨域请求的机制。跨域请求指的是在浏览器中,从一个域名的网页去请求另一个域名的资源。在默认情况下,浏览器限制了跨域请求,以保护用户的安全和隐私。★CO......
  • TCP协议的客户端和服务端的多路复用
    #include<stdio.h>#include<sys/types.h>#include<sys/socket.h>#include<arpa/inet.h>#include<unistd.h>#include<string.h>#include<sys/time.h>#include<sys/select.h> intmain(void){   //1.创建套接字......
  • boost-Asio 基础学习2 --socket 服务端和客户端简单通讯
    已经写了两期文章了!这是第三期现在也到使用asio库实现一些基础的小功能了......