CORS跨域
First Post:
Last Update:
Last Update:
对于简单请求,浏览器直接发出CORS请求。具体来说,就是在头信息之中,增加一个Origin字段。
简单请求
- 添加一个origin字段
- 服务器判断origin是否被许可
- 不许可不添加Access-Control-Allow-Origin,否则添加
- 具体格式如下:
- Access-Control-Allow-Origin: http://api.bob.com
- Access-Control-Allow-Credentials: true
- Access-Control-Expose-Headers: FooBar
- Content-Type: text/html; charset=utf-8
非简单请求
- 预检请求:浏览器先询问服务器,当前网页所在的域名是否在服务器的许可名单之中,以及可以使用哪些HTTP动词和头信息字段。只有得到肯定答复,浏览器才会发出正式的XMLHttpRequest请求,否则就报错。
- 请求头格式:options表示询问, Access-Control-Request-Method:列出使用了的方法
OPTIONS /cors HTTP/1.1
Origin: http://api.bob.com
Access-Control-Request-Method: PUT
Access-Control-Request-Headers: X-Custom-Header
Host: api.alice.com
Accept-Language: en-US
Connection: keep-alive
User-Agent: Mozilla/5.0… - 如果否定,则服务器返回一个没有任何相关头的字段,浏览器报错
解决方法
- 浏览器插件
- 后端配置cors
- 如果需要cookie,需要前端一起配合