JS设置header,实现跨域

2018-05-13  本文已影响0人  Dream_丹丹

受浏览器的同源策略限制,JS只能请求本域内的资源,跨域资源共享(Cross-Origin Resource Sharing,CORS)是为解决Ajax技术难实现跨域而提出的一个规范,CORS把HTTP请求分为两类

第一类: 简单跨域请求
第二类:复杂跨域请求(肯定会两次请求服务端)

复杂跨域请求(带自定义header),在发送真是请求前都会先发送OPIONS请求,浏览器根据OPTIONS请求返回的结果决定是否继续发送真是请求,所以复杂请求都肯定会进行两次请求


CORS协议规定的HTTP头,用来进行浏览器发跨域资源请求时进行协商
  1. Origin:HTTP请求头,任何涉及CORS的请求都必须携带
  2. Access-Control-Request-Method:HTTP请求头,带预检(Preflighted)的跨域请求中用来表示真实请求的方法
  3. Access-Control-Request-Headers:HTTP请求头,带预检(Preflighted)的跨域请求中用来表示真实请求的自定义Header列表
  4. Access-Control-Allow-Origin:HTTP响应头,指定服务器端语序进行跨域资源访问的来源域,
    • 可以用通配符 * 来表示允许任何域的JS访问资源
    • 在响应一个携带身份信息(Credential)的HTTP请求时,不能使用通配符,必须指定具体域
  5. Access-Control-Allow-Methods:HTTP响应头,指定服务器允许进行跨域资源访问的请求方法列表,一般用在响应预检请求上
  6. Access-Control-Allow-Headers:HTTP响应头,指定服务器允许进行跨域资源访问的请求头列表,一般用在响应预检请求上
  7. Access-Control-Max-Age:HTTP响应头,用在响应预检请求上,表示是本次预检响应的有效时间
  8. access-Control-Allow-Credentials:HTTP响应头,凡是浏览器请求中携带了身份信息,而在响应头中没有返回Access0COntrol-Allow-Credentials:true的,浏览器都会忽略此次响应
上一篇 下一篇

猜你喜欢

热点阅读