服务器运维(六)跨域配置 Preflight 问题——东方仙化神期

正确配置

python

复制代码
| **Python(Django)** | 在 `settings.py` 中配置:
```python
INSTALLED_APPS = [
    # ...
    'corsheaders',
    # ...
]

MIDDLEWARE = [
    # ...
    'corsheaders.middleware.CorsMiddleware',
    'django.middleware.common.CommonMiddleware',
    # ...
]

CORS_ALLOWED_ORIGINS = ['https://your-frontend.com']  # 生产环境指定前端域名
CORS_ALLOW_METHODS = ['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS']
CORS_ALLOW_HEADERS = ['Origin', 'X-Requested-With', 'Content-Type', 'Accept', 'Authorization']
``` |
| **Java(Spring Boot)** | 编写配置类:
```java
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class CorsConfig implements WebMvcConfigurer {
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
                .allowedOrigins("https://your-frontend.com") // 生产环境指定前端域名
                .allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS")
                .allowedHeaders("Origin", "X-Requested-With", "Content-Type", "Accept", "Authorization")
                .allowCredentials(true) // 若需携带凭证,开启此选项
                .maxAge(3600); // 预检请求结果缓存时间(秒)
    }
}
``` |


### 三、前端无需额外操作(浏览器自动处理)
前端发起跨域请求时,浏览器会**自动触发 Preflight 预检**,无需开发者手动发送 OPTIONS 请求。只需确保请求的方法、自定义头与服务端配置的 `Access-Control-Allow-Methods`、`Access-Control-Allow-Headers` 匹配即可。


通过以上配置,服务端就能正确响应 Preflight 预检请求,浏览器会在预检通过后执行实际的业务请求,从而解决跨域问题。

nodejs

复制代码
app.use((req, res, next) => {res.header('Access-Control-Allow-Origin', '*');res.header('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS');res.header('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept, Authorization');if (req.method === 'OPTIONS') {res.sendStatus(204);} else {next();}});
服务端语言 / 框架 配置方式示例
Node.js(Express) ```javascript
const express = require('express');
const app = express();

Preflight意义

CORS 预检请求(Preflight)失败 ,具体错误类型是 HeaderDisallowedByPreflightResponse

其本质原因是:前端发起跨域请求时,浏览器发送的预检(OPTIONS)请求中包含了自定义 HTTP 头,但 PHP 后端的响应头中未配置允许这些自定义头

阿雪技术观

让我们积极投身于技术共享的浪潮中,不仅仅是作为受益者,更要成为贡献者。无论是分享自己的代码、撰写技术博客,还是参与开源项目的维护和改进,每一个小小的举动都可能成为推动技术进步的巨大力量

Embrace open source and sharing, witness the miracle of technological progress, and enjoy the happy times of humanity! Let's actively join the wave of technology sharing. Not only as beneficiaries, but also as contributors. Whether sharing our own code, writing technical blogs, or participating in the maintenance and improvement of open source projects, every small action may become a huge force driving technological progrss

相关推荐
lx7416026983 分钟前
百度网盘bypy使用
服务器
为什么不问问神奇的海螺呢丶22 分钟前
服务器巡检报告-基于categraf 采集数据-存入Prometheus-写入mysql后生成报告
服务器·mysql·prometheus
网硕互联的小客服28 分钟前
遇到网站500内部服务器错误如何处理?如何预防这样的问题发生?
运维·服务器·安全
叮咚侠32 分钟前
Ubuntu 24.04.3 LTS 中 vdb 的 UUID 永久挂载没有显示的磁盘的操作步骤
linux·运维·ubuntu·挂载磁盘
GAOJ_K35 分钟前
滚柱导轨中的密封件如何判断是否需更换?
运维·人工智能·科技·自动化·制造
skyyx20021 小时前
写给网工新手:子网掩码基本概念和一些计算方法
运维·网络
杰克崔2 小时前
进程内mmap锁相互干扰问题
linux·运维·服务器·车载系统
木泽八2 小时前
python实现pdf拆分与合并
服务器·python·pdf
2501_924064112 小时前
2025年一站式测试平台对比:可视化报告与自动化监控最佳实践
运维·自动化
恒创科技HK2 小时前
2026年香港服务器有哪些区域可选?
运维·服务器