跨域测试

35 阅读1分钟

mp.weixin.qq.com/s/ffGjlDEzE…


1. 为什么点击掘金链接能跳转到微信页面?

  • 页面跳转(a标签或window.open)
    浏览器允许你从一个网站(如 juejin.cn)跳转到另一个网站(如 mp.weixin.qq.com),因为这只是页面级的导航,不涉及前端脚本直接读取或操作目标网站的数据。
  • 安全边界
    跳转后,两个页面是完全隔离的,掘金页面无法用 JS 访问微信页面的内容。
  • 同源策略只限制脚本跨域读取数据,不限制页面跳转

2. 为什么 stplan 前端请求 qeelin 后端会报 CORS 错?

  • 前端 AJAX/Fetch 请求
    当你的前端页面(stplan.waimai.st.sankuai.com)用 JS 请求后端接口(qeelin.waimai.st.sankuai.com),这就是浏览器定义的“跨源请求”。
  • 同源策略限制
    浏览器会检查前端页面和请求目标的协议、域名、端口,只要有一个不同(本例是二级域名不同),就会拦截响应,前端页面拿不到数据。
  • CORS(跨域资源共享)机制
    如果后端没有返回 Access-Control-Allow-Origin 等 CORS 响应头,浏览器会报错(CORS error),前端页面无法获取数据。
  • 安全原因
    这是为了防止恶意网站随意请求并读取其他网站的敏感数据。

3. 总结对比

场景是否跨域浏览器行为用户体验
页面跳转(a标签)跨域允许跳转,页面隔离正常跳转
JS请求不同域名的接口跨域拦截响应,报CORS错误页面无数据/报错

核心结论
  • 页面跳转只改变浏览器地址,不读取目标网站数据,浏览器允许。
  • 前端JS跨域请求涉及数据交互,浏览器默认禁止,除非后端明确允许(CORS头)。