CORS-跨域资源共享

148 阅读1分钟

CORS全称Cross Origin Resource Share,解决请求的跨域问题。原理是服务器对请求进行检查并对响应头做对应的处理,从而允许跨域请求

具体实现

  • 响应简单请求:请求方法为get/post/head,没有自定义请求头,Content-Type是application/x-www-form-urlencoded,multipart/form-data或text/plain之一,在服务器响应头设置
res.setHeader('Access-Control-Allow-origin', 'http://localhost: 3000')
不需设置白名单
res.setHeader('Access-Control-Allow-origin', '*')
  • 响应复杂请求,需要响应浏览器发出的预检options请求,并根据情况设置对应的响应头
else if (method === 'OPTIONS') {
    res.writeHead(200, {
        // 设置允许的请求来源
        'Access-Control-Allow-Origin': '*',
        // 设置允许自定义请求头
        'Access-Control-Allow-Headers': 'X-Token,Content-Type',
        // 设置允许的请求方法
        'Access-Control-Allow-Methods': 'PUT',
        // 预检options和请求接口都要设置的响应头
        'Access-Control-Allow-Credentials': 'true'
    })
    res.end()
}