[HTTP] 跨域资源共享

CORS是什么

CORS是什么

允许服务器声明哪些源站有权限访问哪些资源。

跨域资源共享机制的工作原理主要应用于三个场景:

  • 简单请求
  • 预检请求
  • 认证请求

 
 

简单请求

简单请求是什么

请求满足所有下述条件,则该请求可视为“简单请求”:

  • 使用下列请求方法之一: GET、HEAD或POST
  • 不得人为设置下列集合之外的其他首部字段: Accept、 Accept-Language、Content-Language、Content- Type
  • Content-Type的值仅限于下列三者之一:
    • text/plain
    • multipart/form-data
    • application/x-www-form-udlencoded

值得注意的是,这些跨域请求与浏览器发出的其他跨域请求并无一致。如果服务器未返回正确的响应首部,则请求方不会收到任何数据。因此,那些不允许跨域请求的网站无需为这一新的HT TP访问控制特性担心。

 

请求消息

请求首部字段Origin表示该请求来源于http://foo.exmaple, Origin的值是每次发送请求时自动携带的请求首部消息。

 

响应消息

响应中携带了响应首部字段Access Control Allow-Origin,使用Origin和Access -Control-Allow-Origin就能完成最简单的访问控制。

 
 

预检请求

预检请求是什么

当请求满足下述任一条件时,即应首先发送预检请求:

  • 使用下列请求方法之一: PUT、DEL ETE、CONNECT、OPTIONS、TRACE或PATH
  • 不得人为设置下列集合之外的其他首部字段: Accept、 Accept-Language、Content-Language、Content- Type
  • Content- Type的值仅限于下列三者之一:
    • text/plain
    • multipart/form-data
    • application/x-www-form uclencoded

预检请求要求必须首先使用OPTIONS方法发起一个 预检请求到服务器,以获知服务器是否允许该实际请求。

预检请求可以避免跨域请求对服务器的用户数据产生未预期的影响。

 

请求消息
  • 请求首部字段Access - Control-Request-Method表示该请求使用POST方法。
  • 请求首部字段Access -Control-Request Headers表示该请求携带X PINGOTHER首部字段。

 

响应消息
  • 响应首部字段Access-Control-Allow-Methods表示允许POST、GET和OPTIONS请求方法。
  • 响应首部字段Access-Control-Allow-Headers表示允许请求携带首部字段X- PINGOTHER。
  • 响应首部字段Access-Control-Max-Age表示设置响应有效时间为1728000秒。

 

CORS是什么

 

Window对象是什么

 
 

认证请求

认证请求是什么

CORS具有一个有趣的特性是,可以基于HTTP Cookies和HTTP认证信息发送身份凭证。一般而言,对于跨域XML HttpRequ Jest请求,浏览器不会发送身份凭证信息。如果要发送凭证信息,需要设置XML HttpRequ Jest的某个特殊标志位。

xmlHttpRequest.withCredentials = true;

将XML HttpRequ Jest的withCredentials标志设置为true,使得向服务器发送Cookies,服务器返回
响应首部字段Access-Control-Allow-Credentials: true。

如果服务器端的响应中未携带Access-Control-Allow-Credentials: true,浏览器将不会把响应内容返回给请求的发送者。

 

请求消息

请求携带了请求首部字段Cookie的相关信息。

 

响应消息
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值