cors响应头部:Access-Control—Allow- 开头
1. Access-Control—Allow-origin:<origin> | *
{
origin 指定了允许访问该资源的外部url
例:res.setHeader("Access-Control—Allow-origin":'http://itcast.cn') 只允许来自http://itcast.cn的请求
* 代表任何域名的请求都可以
}
2. Access-Control—Allow-Headers:默认情况cores仅支持客户端向服务器发送9个请求头,如果发送了额外的请求头信息,则需要在服务器端,通过Access-Control—Allow-Headers对额外的请求头进行声明,否则请求失败
例{
允许客户端额外向服务器发送Content-Type,X-Custom-Header两个请求头
注意:多个请求头之间用英文符号进行分割
res.setHeader("Access-Control—Allow-Headers":'Content-Type,X-Custom-Header')
}
3. Access-Control—Allow-Methods:
默认情况下,cors仅支持客户端发送get,post,head请求,如果发送别的请求方式要用Access-Control—Allow-Methods指明
例{
res.setHeader("Access-Control—Allow-Methods:":'POST,GET,DElETE,HEAD')
res.setHeader("Access-Control—Allow-Methods:":'*') 通配符
}
分类:{
简单请求:
{
1.请求方式:get,post,head三者之一
2.http头部信息不超过默认九个字段(Content-Type只有三个值:application/x-www-form-urlencoded,multipart/form-data,text/plain)
}
预检请求:
{
1.请求方式:get,post,head之外的类型
2.http请求头包含了自定义头部字段
3.向服务器发送了application/json格式的数据
在浏览器与服务器正式通信之前,浏览器会先发送OPTION请求进行预检,已获知服务器是否允许该实际请求,所以这一次的OPTION请求被称为预检请求。服务器
成功响应预检请求后,才会发送真正的请求,并且携带真实数据
}
区别:
{
简单请求只发一次,预检请求发两次
}
}