讲师中心 微信公众号
AI工具推荐 视频效率加速

CORS(跨源资源共享)简介 什么是CORS?

酷雪同学_2699

酷雪同学_2699

发布时间:2024-11-14 14:49:46

|

890人浏览过

|

来源于dev.to

转载

cors(跨源资源共享)简介 什么是cors?

CORS,即跨源资源共享,是一种由 Web 浏览器实现的安全功能,允许或限制 Web 应用程序向与提供网页的域不同的域发出请求。简单来说,CORS 决定了一个域中的资源是否可以被另一个域中的网页访问。

默认情况下,Web 浏览器强制执行同源策略,该策略会阻止网页向与提供该页面的域不同的域发出请求。这样做是为了防止恶意网站访问其他网站上的敏感数据。然而,有时 Web 应用程序需要从不同的来源(域、协议或端口)请求资源,这就是 CORS 发挥作用的地方。

CORS 的实际应用

当一个域上的 Web 应用程序需要从另一个域请求数据时,它会发送一个 HTTP 请求,其中包含指示请求来源的特定标头。然后,托管所请求资源的服务器必须通过在响应中发送适当的 CORS 标头来决定是否允许该请求。

例如,如果您正在构建托管在 http://example.com 上的前端应用程序,并且它需要从 http://api.example2.com 获取数据,则 CORS 标头允许位于 api.example2 的服务器。 com 指定是否允许来自 example.com 的请求。

常见用例

以下场景通常需要 CORS:

第三方 API 访问:许多现代 Web 应用程序依赖外部 API 来提供身份验证、支付处理或社交媒体集成等服务。当这些 API 托管在不同的域上时,CORS 是必要的。

前后端通信:如果 Web 应用程序的前端和后端托管在不同的域或子域上,则使用 CORS 来允许它们之间的通信。

CDN(内容交付网络):网站通常使用 CDN 来提供静态资产,例如图像、样式表或 JavaScript 文件。 CORS 允许主站点从托管在不同源的 CDN 请求这些资源。

CORS 中的关键参数和指标

Web Accessibility (WCAG 2 AA))
Web Accessibility (WCAG 2 AA))

将 WCAG 2 AA 无障碍标准应用于设计系统、UI 组件和网页——通过可运行的验证器进行对比度计算,采用设计 token 模式使颜色天生可访问,设定排版和焦点状态规则,并提供语义检查清单。适用于构建或审查 UI。

下载

Access-Control-Allow-Origin:该标头是 CORS 中最重要的标头,指示允许哪些源访问该资源。可以设置为:

特定来源(Access-Control-Allow-Origin:https://example.com)
通配符(Access-Control-Allow-Origin:*),允许任何源访问资源。但是,对于包含凭据的请求不允许这样做。
Access-Control-Allow-Methods:指定访问资源时允许使用哪些 HTTP 方法(例如 GET、POST、PUT、DELETE)。例如:
访问控制允许方法:GET、POST、PUT

Access-Control-Allow-Headers:列出发出实际请求时可以使用的 HTTP 标头。例如,如果请求包含像 X-Custom-Header 这样的自定义标头,则应在此处指定:
访问控制允许标头:X-自定义标头,内容类型

Access-Control-Allow-Credentials:指示请求是否可以包含 cookie、HTTP 身份验证或客户端证书等凭据。这对于需要身份验证的 API 很重要。例如:Access-Control-Allow-Credentials: true

Access-Control-Expose-Headers:指定浏览器应向请求客户端公开哪些标头。默认情况下,浏览器仅公开一组有限的标头,例如 Cache-Control 和 Content-Type,但 Access-Control-Expose-Headers 可以提供其他标头。

Access-Control-Max-Age:定义浏览器可以缓存预检请求结果(见下文)的时间。它通过减少预检请求的数量来帮助提高性能。例如:
Access-Control-Max-Age:86400(24小时)

预检请求:对于某些类型的请求,尤其是那些修改服务器数据(例如 PUT 或 DELETE)的请求,浏览器使用 HTTP OPTIONS 方法发送预检请求。这会向服务器检查实际请求是否可以安全发送。服务器对预检请求的响应决定浏览器是否继续处理实际请求。

什么时候需要 CORS?

以下情况下需要 CORS:

发出跨域请求:如果您的前端和后端由不同的域或端口提供服务,或者您从应用程序访问外部 API。

访问 CDN 或第三方服务上托管的资源:例如,如果您从 CDN 加载字体、图像或其他资源,服务器必须包含 CORS 标头以允许您的网站访问它们。

安全问题:虽然启用 CORS 允许跨域请求,但应仔细配置它以避免您的应用程序遭受恶意攻击。只应允许受信任的来源,并且应使用身份验证令牌等附加安全措施来保护敏感操作。

结论

CORS 是确保不同来源的资源安全、受控共享的重要机制。经过正确配置,它有助于现代 Web 应用程序与第三方服务和 API 交互,同时保护用户免受安全风险。对于任何使用 API、CDN 或多域应用程序的 Web 开发人员来说,了解如何配置 CORS 标头并了解何时以及为何需要它们至关重要。

热门AI工具

更多
讯飞智作

讯飞智作是一款AI视频创作工具,AI文本配音工具,数字人课程、营销视频制作。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

讯飞智文

一款面向学习和办公场景的AI文档创作工具,可辅助生成PPT与Word文档,提高资料整理和内容制作效率。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

创客贴AI

创客贴AI是一款AI图像与设计工具,AI辅助的智能在线设计工具。

咔片AIPPT

一款在线AI演示文稿制作工具,可根据主题和内容需求辅助生成PPT结构与页面,提高演示材料制作效率。

SkildArt
SkildArt Hot

SkildArt是一款AI文本写作工具,一站式 AI 视觉创作平台。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

讯飞绘文

讯飞绘文是一款由科大讯飞推出的一站式 AIGC 内容运营平台。

相关专题

更多
cookie
cookie

Cookie 是一种在用户计算机上存储小型文本文件的技术,用于在用户与网站进行交互时收集和存储有关用户的信息。当用户访问一个网站时,网站会将一个包含特定信息的 Cookie 文件发送到用户的浏览器,浏览器会将该 Cookie 存储在用户的计算机上。之后,当用户再次访问该网站时,浏览器会向服务器发送 Cookie,服务器可以根据 Cookie 中的信息来识别用户、跟踪用户行为等。

12639

2023.06.30

document.cookie获取不到怎么解决
document.cookie获取不到怎么解决

document.cookie获取不到的解决办法:1、浏览器的隐私设置;2、Same-origin policy;3、HTTPOnly Cookie;4、JavaScript代码错误;5、Cookie不存在或过期等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

1286

2023.11.23

阻止所有cookie什么意思
阻止所有cookie什么意思

阻止所有cookie意味着在浏览器中禁止接受和存储网站发送的cookie。阻止所有cookie可能会影响许多网站的使用体验,因为许多网站使用cookie来提供个性化服务、存储用户信息或跟踪用户行为。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

864

2024.02.23

cookie与session的区别
cookie与session的区别

本专题整合了cookie与session的区别和使用方法等相关内容,阅读专题下面的文章了解更详细的内容。

1966

2025.08.19

数据库Delete用法
数据库Delete用法

数据库Delete用法:1、删除单条记录;2、删除多条记录;3、删除所有记录;4、删除特定条件的记录。更多关于数据库Delete的内容,大家可以访问下面的文章。

3411

2023.11.13

drop和delete的区别
drop和delete的区别

drop和delete的区别:1、功能与用途;2、操作对象;3、可逆性;4、空间释放;5、执行速度与效率;6、与其他命令的交互;7、影响的持久性;8、语法和执行;9、触发器与约束;10、事务处理。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

1025

2023.12.29

http500解决方法
http500解决方法

http500解决方法有检查服务器日志、检查代码错误、检查服务器配置、检查文件和目录权限、检查资源不足、更新软件版本、重启服务器或寻求专业帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

3903

2023.11.09

http请求415错误怎么解决
http请求415错误怎么解决

解决方法:1、检查请求头中的Content-Type;2、检查请求体中的数据格式;3、使用适当的编码格式;4、使用适当的请求方法;5、检查服务器端的支持情况。更多http请求415错误怎么解决的相关内容,可以阅读下面的文章。

954

2023.11.14

DBeaver怎么导入数据
DBeaver怎么导入数据

DBeaver数据导入专题,整理Excel、CSV、SQL、TXT等常见文件的数据导入方法,涵盖目标数据库选择、数据表创建、字段映射、数据类型设置及导入参数配置等操作,帮助用户将本地文件中的数据写入数据库,并了解批量导入、重复数据处理和导入失败等常见问题的解决方法。

20

2026.11.05

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
SQL 教程
SQL 教程

共61课时 | 7.6万人学习

Docker Desktop故障排查手册
Docker Desktop故障排查手册

共0课时 | 0人学习

MyEclipse学习中心
MyEclipse学习中心

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn