💡
原文中文,约2000字,阅读约需5分钟。
📝
内容提要
CORS是W3C提出的跨域请求方案,允许不同源的页面脚本访问资源。浏览器会自动添加Origin请求头,非简单请求会触发预检的Options请求,以确认允许的方法和请求头。如果预检未通过,实际请求将不会发送。Kong网关的CORS插件可配置以解决凭据问题。
🎯
关键要点
- CORS是W3C提出的跨域请求方案,允许不同源的页面脚本访问资源。
- 浏览器会自动添加Origin请求头,非简单请求会触发预检的Options请求。
- 预检请求用于确认允许的方法和请求头,如果未通过,实际请求将不会发送。
- 脚本默认不携带凭据,但可以通过WithCredentials=true配置要求携带凭据。
- Kong网关的CORS插件可配置以解决凭据问题,默认preflight_continue=false。
- 如果将preflight_continue设置为true,预检请求将转发到upstream,需后端忽略凭据认证。
❓
延伸问答
CORS是什么?
CORS是W3C提出的跨域请求方案,允许不同源的页面脚本访问资源。
浏览器如何处理CORS请求?
浏览器会自动添加Origin请求头,非简单请求会触发预检的Options请求以确认允许的方法和请求头。
什么是预检请求,它的作用是什么?
预检请求是浏览器在跨域访问时自动发送的Options请求,用于确认允许的方法和自定义请求头。
如何在脚本中携带凭据进行CORS请求?
脚本可以通过设置WithCredentials=true来要求浏览器携带凭据。
Kong网关的CORS插件有什么配置选项?
Kong网关的CORS插件可以配置preflight_continue选项,默认值为false,决定是否将预检请求转发到upstream。
如果预检请求未通过,会发生什么?
如果预检请求未通过,后续的实际请求将不会发送。
➡️