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

山西省城乡建设厅网站爱站网关键词密度查询

山西省城乡建设厅网站,爱站网关键词密度查询,做视频网站用什么开发,网站两边横幅怎么做CORS 🔥 什么是 CORS(跨域资源共享)? 跨域不是后端的问题,是浏览器出于安全策略主动拦截 ✅ 关键点:Access-Control-Allow-Origin 是谁给谁的? • 是后端响应头里给前端浏览器的 • 告诉浏览…

CORS

🔥 什么是 CORS(跨域资源共享)?

跨域不是后端的问题,是浏览器出于安全策略主动拦截

✅ 关键点:Access-Control-Allow-Origin 是谁给谁的?

是后端响应头里给前端浏览器的

• 告诉浏览器:✅ “我允许你这个来源访问我”

如果没有这个头,或者值不对 —— 浏览器直接拦截,前端 JS 连响应内容都拿不到!

🧠 浏览器执行流程:

  1. 🧾 浏览器发现请求是跨域的(不同域、端口、协议)

  2. 🔍 发起一个预检请求(OPTIONS 方法,只有复杂请求才有)

  3. 🛂 后端响应时 必须带上这个 header

  4. ❌ 如果没有这个头,或者值不匹配:

❗ 浏览器直接报

CORS 错误,并阻止前端 JS 获取任何返回内容(哪怕状态是 200、404)

🧱 所以总结一句话:

• ✅ CORS 是浏览器行为

• ❗ 后端必须主动返回 Access-Control-Allow-Origin 响应头

• 🧠 不符合就被浏览器“截胡” —— 返回内容根本到不了 JS 层!

OPTIONS 请求

🌐 什么是 OPTIONS 请求?

它是浏览器为了 CORS 跨域安全机制自动发起的 “预检请求”(Preflight Request)

💡 为什么需要预检?

因为有些跨域请求是 “复杂请求”,比如:

• 请求方法是:PUT / PATCH / DELETE / POST(但带了复杂的 header 或 content-type)

• 请求头中带了:Authorization / Content-Type: application/json 等非简单头

• 或者自定义 header,例如 x-token、x-request-id 等

🛫 自动发出一个 OPTIONS 请求:

OPTIONS /aichat/pub_agent/expend/dict/ HTTP/1.1
Origin: https://your-frontend.com
Access-Control-Request-Method: POST
Access-Control-Request-Headers: Content-Type, Authorization

如果使用OPTIONS 需要有这个origin的信息

curl --location --request OPTIONS 'http://localhost:8000/api/json_config' \
--header 'Origin: http://example.com' \
--header 'User-Agent: Apifox/1.0.0 (https://apifox.com)' \
--header 'Accept: */*' \
--header 'Host: 49.232.244.254:8006' \
--header 'Connection: keep-alive'access-control-allow-origin	*
access-control-allow-credentials	tru

🔹 浏览器发起的是 预检请求(OPTIONS)

• 当前端请求包含自定义 Header、使用了复杂方法(如 PUT、PATCH、DELETE)或跨域时,浏览器会先发一个 OPTIONS 请求(预检);

• 浏览器不会真正关心 OPTIONS 返回的内容本身,而是看响应头中是否有以下关键字段:

Header含义
Access-Control-Allow-Origin允许哪个域的前端访问
Access-Control-Allow-Credentials是否允许携带 cookie 或身份验证
Access-Control-Allow-Methods允许哪些请求方法(如 POST、GET)
Access-Control-Allow-Headers允许携带哪些自定义 header

CORSMiddleware还是405?

FastAPI 的 CORSMiddleware 是中间件,它确实会拦截跨域的 OPTIONS 请求并提前响应,但是这个行为只在请求包含 Origin 头时才生效

🧠 也就是说:

• 如果浏览器发起的 OPTIONS 请求没有带 Origin,那 CORSMiddleware 就不会拦截

• 请求会继续向后传给你的 API 路由系统;

• 如果你没有为该路由注册 OPTIONS 方法(你只有 POST),那就会返回 405 Method Not Allowed;

• 此时 CORS 头部信息不会再添加,浏览器也看不到响应内容(被 CORS 拦截了)

这个请求虽然模拟了浏览器的 OPTIONS,但默认并没有加 Origin,所以:

• CORSMiddleware 不处理;

• 请求走到路由系统;

• /api/json_config 路由没有注册 OPTIONS;

• FastAPI 返回 405;

• 浏览器检测到是跨域,又没看到 Access-Control-Allow-*,直接 CORS 拦截。

✅ 正确行为模拟(curl):

curl -X OPTIONS http://:/api/json_config \-H "Origin: https://example.com" \-H "Access-Control-Request-Method: POST

✅ 如果你写了 CORSMiddleware,这条请求会被中间件拦截,然后返回 200 + CORS 响应头。

行为是否中间件生效
请求不带 Origin❌ 不会触发 CORS 中间件
请求带 Origin✅ 会触发 CORSMiddleware 自动响应
没有注册 OPTIONS❌ 会 405,浏览器拦截

浏览器预检流程

🌐 浏览器中的 CORS 预检流程(Preflight Request)

前端 JS 想发一个“可能有安全风险”的跨域请求,比如:

fetch("https://api.example.com/user", {method: "POST", // 非 GET/HEADheaders: {"Content-Type": "application/json", // 非简单头部"Authorization": "Bearer xxx"},body: JSON.stringify({ name: "张三" })
})

💡 浏览器内部流程:

  1. 浏览器先不会直接发 POST 请求

  2. 它会先发一个 OPTIONS 请求 —— 这叫 预检请求(preflight)

  3. 这个 OPTIONS 请求包含:

• Origin: http://你的前端.com

• Access-Control-Request-Method: POST

• Access-Control-Request-Headers: content-type, authorization

app.add_middleware(CORSMiddleware,allow_origins=["*"],  # 或指定域名allow_methods=["*"],allow_headers=["*"]
)
后端配置

中间件就会识别这个 OPTIONS 预检请求,并直接返回 200,且带上这些头部:

Access-Control-Allow-Origin: http://你的前端.com
Access-Control-Allow-Methods: POST
Access-Control-Allow-Headers: content-type, authorization

🎉 接着浏览器才会说:OK,放心了,我现在再发正式的 POST 请求!

❌ 如果后端不返回上述响应头?

那浏览器 根本不会继续发真实请求,直接 CORS 拦截,JS 拿不到任何信息,甚至连 response 都访问不到。

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

相关文章:

  • vs做b s网站的搜索引擎优化
  • 做网站策划书网站优化网
  • 怀化公积金网站腾讯广告推广平台入口
  • lamp网站开发黄金组合域名批量查询
  • 免费网页空间代码游戏优化大师有用吗
  • 设计类公司简介网页seo怎样
  • 软件开发公司可靠么培训机构seo
  • 工业软件开发需要学什么专业泾县网站seo优化排名
  • 网站更改备案信息在哪里公司想做网络推广贵不
  • 襄城县住房和城市建设局网站91
  • 免费建设网站怎么样webview播放视频
  • 什么软件做网站最好网络推广平台有哪些
  • 一个域名一个主机可以做两个网站吗南京百度seo代理
  • 海南信息港官网seo社区
  • 网站需要做实名认证如何做seo对网站优化
  • 做书籍的网站百度站长中心
  • 用dw做网站背景种子在线资源搜索神器
  • 济宁市环保局建设项目审批网站关键词优化是怎么做的
  • 加强网站建设和维护工作2022年今天新闻联播
  • 动态网站开发课程报告谷歌浏览器下载安装(手机安卓版)
  • 政府网站建设企业长春网站制作
  • ins做甜品网站百度平台客服电话
  • 枣庄高端网站建设怎么样建网站
  • vs2015 做网站成都网站seo公司
  • h5网站制作费用百度seo排名规则
  • 企业网站开发制作费入那里房地产新闻最新消息
  • 自我介绍网页模板代码seo培训师
  • 长治在网络做推广百度自然搜索排名优化
  • 推荐莆田交友网站视频网站搭建
  • 网络推广最好的网站免费seo网站推荐一下