返回列表 发新帖

跨域 optiobs_跨域资源共享

[复制链接]

11

主题

29

帖子

29

积分

新手上路

Rank: 1

积分
29
发表于 2024-11-3 06:21:45  | 显示全部楼层 | 阅读模式
跨域资源共享(CORS)是一种机制,它允许在一个域中的网页或Web应用程序从另一个域获取资源。这通常涉及在服务器端设置适当的响应头,以便浏览器可以安全地接受来自不同域的请求。
跨域资源共享(CORS)是网页浏览器的一种安全特性,用于放松同源策略的限制,使不同的域之间可以共享资源,下面将详细介绍跨域资源共享的相关信息:

zbhjszffwhlqmad.png

zbhjszffwhlqmad.png


(图片来源网络,侵删)
1、同源策略与跨域访问
同源策略:浏览器的安全特性,用于防止不同源(协议、域名或端口不同)的页面之间的交互,目的是防止恶意网站获取敏感信息。
跨域访问:在实际应用中,常常需要在不同域之间进行数据交互,从另一个域获取图片资源或发送AJAX请求,由于同源策略的限制,这些操作会被浏览器阻止,因此需要使用CORS来允许特定的跨域请求。
2、CORS的工作原理
跨域请求:当一个网页尝试从另一个源加载资源时,浏览器会首先检查该资源的CORS头部信息,以确定是否允许该跨域请求。
CORS头部信息:服务器在响应头中添加特定的CORS头部信息,如AccessControlAllowOrigin,指示浏览器允许来自哪些源的跨域请求。
3、CORS的详细设置

zbhjylx4ozpikye.jpg

zbhjylx4ozpikye.jpg


(图片来源网络,侵删)
允许的来源:通过AccessControlAllowOrigin指定允许的请求来源,可以设置为具体的域名,也可以使用通配符“*”表示允许任何来源的请求。
允许的方法:通过AccessControlAllowMethods声明允许的HTTP方法,如GET、POST、PUT等。
允许的头部信息:使用AccessControlAllowHeaders定义允许在请求中包含的头部信息,这对于包含自定义头部信息的请求尤为重要。
暴露的头部信息:通过AccessControlExposeHeaders指定哪些响应头可以被客户端访问,这在需要让JavaScript代码访问特定响应头时非常有用。
预请求缓存时间:AccessControlMaxAge指定预检请求(OPTIONS请求)的结果在浏览器中缓存的最长时间,单位为秒。
4、CORS规则的应用
OSS管理控制台:在OSS(对象存储服务)管理控制台中,用户可以登录并进入数据安全设置,进行CORS规则的配置。

zbhjxyy1kqk0rs3.png

zbhjxyy1kqk0rs3.png


(图片来源网络,侵删)
CDN配置:如果开启了CDN加速,需要在CDN控制台配置相应的CORS规则,以确保跨域请求的正确处理。
SDK配置:通过各类云服务提供商的SDK,如阿里云、腾讯云等,也可以编程方式动态设置CORS规则。
5、CORS规则的优先级
匹配规则:当OSS收到跨域请求时,会按照CORS规则的顺序进行检查,使用第一条匹配的规则来处理请求。
缓存考虑:如果在应用中同时存在CORS和非CORS请求,或者有多个可能的Origin值,建议选中返回Vary: Origin,以避免本地缓存错乱。
跨域资源共享(CORS)是一种重要的网页安全机制,它允许在不同域之间进行受控的资源分享,通过合理配置CORS规则,可以在确保安全的同时,实现跨域的数据交互和资源共享,在实际开发中,开发者需要根据实际需求和使用场景,灵活运用CORS的各项参数,以达到最佳的跨域访问效果。

下面是一个关于跨域资源共享(CORS)中OPTIONS方法(预检请求)相关信息的介绍:
名称 描述
请求方法OPTIONS
用途 用来发起预检请求,以检查服务器是否允许跨域请求,获取服务器支持的HTTP请求方法,检查服务器性能。
触发条件 当发起跨域请求且请求不符合简单请求的条件时触发,简单请求指:请求方法是GET、POST、HEAD之一,且没有自定义的请求头,以及请求的ContentType是application/xwwwformurlencoded、multipart/formdata、text/plain中的一种。
请求头部 可能包含以下头部:
Origin: 指示请求的源(域名、协议、端口)。
AccessControlRequestMethod: 指示实际请求将使用的HTTP方法。
AccessControlRequestHeaders: 如果有自定义头部,将在此列出。
服务器响应 包含以下头部信息:
AccessControlAllowOrigin: 指示哪些源可以访问资源。
AccessControlAllowMethods: 指示服务器支持的HTTP方法。
AccessControlAllowCredentials: 指示是否允许携带凭证(如Cookies)。
AccessControlAllowHeaders: 如果服务器支持自定义请求头部,将在此列出。
AccessControlMaxAge: 指示预检请求结果可以缓存的时间(秒)。
作用 CORS预检请求通过OPTIONS方法,使得浏览器可以确认是否可以安全地发送实际的跨域请求。
浏览器行为 在发送实际请求前,浏览器自动发起OPTIONS预检请求,并根据服务器响应决定是否继续发送实际请求。
配置示例 在服务器端配置示例(以Node.js的Express框架为例):
app.options('/api', (req, res) => {
  res.set('AccessControlAllowOrigin', '*');
  res.set('AccessControlAllowMethods', 'GET, POST, PUT');
  res.set('AccessControlAllowHeaders', 'ContentType, Authorization');
  res.status(204).end();
})
兼容性 绝大多数现代浏览器都支持CORS和OPTIONS预检请求。

这个介绍概述了跨域资源共享中OPTIONS请求的主要方面,有助于理解和实施CORS策略。
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表