跨域问题

同源策略: http协议 域名 端口一致

跨域请求
Access-Control-Allow-Origin: *
请求分为

  • 简单请求,浏览器直接发起请求 fetch。
fetch('https://baidu.com');

需要满足以下几个要求

  1. 请求方法为: post, get, head
  2. 头部字段满足CORS安全规范, Fetch Standard
  3. 请求头的Content-Type为
    text/plain
    multipart/form-data
    application/x-www-form-urlencoded
    简单请求跨域的CORS解决办法
  4. Access-Control-Allow-Origin: [设置为request Origin值]
  5. Access-Control-Allow-Origin: *
  • 非简单请求,浏览器会发起一个预检options方法的请求,检查是否允许来自当前域的请求
    预检请求OPTIONS
    Origin: http://my.com
    Access-Control-Request-Method: POST
    Access-Control-Request-Headers: a, b, content-type

Access-Control-Allow-Origin: http://my.com
Access-Control-Allow-Methods: POST
Access-Control-Allow-Headers: a, b, content-type
Access-Control-Max-Age: 86400
通过预检请求后发起简单请求

为什么需要CORS:

  1. 保护服务器, 有助于减轻服务器负载和风险
  2. 保护隐私,CORS限制了敏感数据的访问
  3. 安全考虑,防止盗用用户数据或进行CSRF攻击

如何解决CORS问题

  1. 配置Nginx代理
  2. 按照CORS工作机制,正确配置相关表头和正确的处理预检请求
    res.header('Access-Control-Allow-Origin', 'https://example.com') //允许特定域名
  3. JSONP
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容