前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >跨源资源共享(CORS)策略

跨源资源共享(CORS)策略

原创
作者头像
zhangjiqun
发布2024-07-24 09:01:34
1620
发布2024-07-24 09:01:34
举报
文章被收录于专栏:大语言模型,算力共享

目录

跨源资源共享(CORS)策略

场景描述

CORS策略配置

示例请求与响应

简单请求

预检请求

总结


跨源资源共享(CORS)策略

跨源资源共享(CORS,Cross-Origin Resource Sharing)是一种网络安全机制,它允许或拒绝在Web应用中跨源(即不同域名、协议或端口)的HTTP请求。CORS通过服务器设置特定的HTTP响应头来告知浏览器哪些外部域名可以访问哪些资源。下面通过简单例子来说明CORS策略的工作原理

场景描述

假设有两个网站:

  • 网站A(https://website-a.com):用户正在浏览的网站。
  • 网站B(https://website-b.com):一个提供数据服务的第三方网站。

用户在使用网站A时,网站A的JavaScript代码需要请求网站B上的某些数据。由于同源策略的限制,浏览器默认会阻止这种跨域请求。但如果网站B的服务器配置了CORS策略,那么网站A的请求就有可能被允许。

CORS策略配置

网站B的服务器需要配置CORS策略,以便允许网站A的请求。这通常通过在响应头中设置Access-Control-Allow-Origin来实现。

  1. 允许特定源
    • 网站B的服务器可以在响应头中设置Access-Control-Allow-Origin: https://website-a.com,表示只允许来自https://website-a.com的请求访问其资源。
  2. 允许所有源(通常不推荐,出于安全考虑):
    • 如果网站B希望允许所有来源的请求,可以设置Access-Control-Allow-Origin: *。但请注意,这种做法可能会带来安全风险,因为任何网站都可以请求其资源。

示例请求与响应

简单请求

如果请求是“简单请求”(如使用GET或POST方法,且满足CORS安全列表的头部字段),浏览器会直接发送请求,并在响应中检查Access-Control-Allow-Origin等CORS响应头。

请求(从网站A到网站B)

GET /data HTTP/1.1

Host: website-b.com

Origin: https://website-a.com

...

响应(从网站B到网站A)

HTTP/1.1 200 OK

Content-Type: application/json

Access-Control-Allow-Origin: https://website-a.com

...

{

// 数据内容

}

预检请求

对于某些“非简单请求”(如使用PUT、DELETE方法,或使用非CORS安全列表的头部字段),浏览器会先发送一个OPTIONS请求的“预检请求”到服务器,询问是否允许该跨域请求。

预检请求(从网站A到网站B)

OPTIONS /data HTTP/1.1

Host: website-b.com

Origin: https://website-a.com

Access-Control-Request-Method: PUT

Access-Control-Request-Headers: X-Custom-Header

...

预检响应(从网站B到网站A)

HTTP/1.1 204 No Content

Access-Control-Allow-Origin: https://website-a.com

Access-Control-Allow-Methods: PUT, GET, OPTIONS

Access-Control-Allow-Headers: X-Custom-Header

Access-Control-Max-Age: 86400

...

如果预检响应表明请求被允许,浏览器会发送实际的请求。

总结

CORS策略通过服务器配置的HTTP响应头来控制哪些跨域请求被允许。这既保护了网站资源不被恶意访问,也允许了合法的跨域请求,从而促进了Web应用之间的数据共享和交互。在配置CORS策略时,需要权衡安全性和灵活性,避免过度开放资源访问权限。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 跨源资源共享(CORS)策略
    • 场景描述
      • CORS策略配置
        • 示例请求与响应
          • 总结
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档