跨域
浏览器出于安全考虑,默认禁止网页向"不是自己家的"服务器请求数据——这条规则经常让新手一头雾水。
它到底指什么?
假设你的前端运行在 localhost:3000,而你的后端 API 运行在 localhost:8080。虽然它们都在你的电脑上,但因为端口号不同,浏览器就认为它们属于不同的"来源"(Origin)。
浏览器有一条安全规则:一个网页默认只能向和自己同源的服务器发请求。向不同源的服务器发请求——哪怕是你自己写的后端——就叫"跨域请求",会被浏览器拦截,并在控制台报出那个让无数新手困惑的错误:Access to fetch has been blocked by CORS policy。
为什么浏览器要管这件事?
这是一种保护机制。想象一下,如果任何网页都可以随意向任何服务器发请求,那一个恶意网页就可以趁你登录着银行的时候,偷偷代替你向银行的服务器发送转账请求。CORS 策略确保只有被服务器明确授权的网页才能与它通信。
碰到了怎么解决?
解决 CORS 错误需要在服务端进行配置——告诉服务器"允许来自 localhost:3000 的请求"。这通常是在后端代码中添加几行配置,AI 可以帮你生成。如果你用的是 Next.js 这类全栈框架,前后端在同一个域名下运行,通常不会碰到跨域问题。
也叫
CORSCross-Origin Resource Sharing跨域资源共享跨域请求
和谁相连