虽然还没实际碰过 CORS 错误,但实在太好奇了,所以到处看了文章,得出两个感想:
因此这篇文章不会针对个别 CORS 错误该如何解决做讨论,只会涵盖什麽时候会踩到这个雷以及初步认识请求的类型。
图片来源:MDN
以上图为例:这个网页的来源是http://domain-a.com
,而网页中的 canvas 要向http://domain-b.com
请求资源,这种跨来源的请求就会受到 CORS 的管控。
CORS 机制提供网页服务器跨来源的存取控制,具体方法是透过 HTTP-header 的设定,让网页服务器允许哪些来源可以存取它的资料
MDN 将请求类型分成三大类:简单请求、预检请求和带有身份验证(cookie)的请求,以下只先介绍前两类
需要符合以下两个条件才算简单请求
GET
、HEAD
、POST
图片来源:JAVASCRIPT.INFO
对照上图我们来看看一个跨来源的简单请求会经历哪些步骤:
Access-Control-Allow-Origin
设有发送请求的来源
或*
,允许JS读取资料,换句话说,如果没有设定就会发生CORS 错误
*
表示允许任何网域跨站存取资源
MDN有详细列出哪些状况会被归类为预检请求,我目前倾向记只要是非简单请求都可以用预检请求的步骤去思考。
以下也用图示来理解预检请求过程
图片来源:JAVASCRIPT.INFO
OPTIONS方法
向服务器先发送讯息200 OK
资料告知浏览器可以发送HTTP请求Access-Control-Allow-Origin
是否包含请求来源
或*
Access-Control-XXX 的部分一开始看觉得很可怕,但只要专注在後面的文字就好,会发现就是在注记哪些来源,方法或资料格式是被允许的
参考资料:
MDN
JAVASCRIPT.INFO
CORS 完全手册
Deep Dive in CORS
CORS 是什麽? 如何设定 CORS?
<<: [ Day 22 ] React 中的 State 管理 - Redux
希望前一日的吉良吉影解说还是够ㄎ一ㄤ,大家不要向大会检举有人在呼麻写文章QQ 虽说Jojo不相称的经...
终於要从 Beginner 迈向 Intermediate 了。 这次的讲者讲话好清楚,转 1.75...
创建你的钱包 一样,对比前面的match档,现在新增一个bank的json档案 回到bot档,现在我...
接续昨天提到的,我们今天将会实际跑一次指令,如果看到这里的你还在犹豫的话,别犹豫了,跟我一起开始吧!...
还记得以前在大学修教程时有一门课 叫做「教育测验与评量」(简称「教测评」) 一直觉得那是一门很有趣也...