技术与工程已解决
什么是 CORS?为什么浏览器跨域失败但 Postman 成功?
解释浏览器同源策略与 CORS,避免使用 no-cors 掩盖服务端配置问题。
问题正文
前端调用 API 时出现 CORS error,但同一个接口在 Postman 或服务端请求中能成功。
网上建议加 mode: no-cors,这样做是否正确?
解释浏览器同源策略与 CORS,避免使用 no-cors 掩盖服务端配置问题。
问题正文
前端调用 API 时出现 CORS error,但同一个接口在 Postman 或服务端请求中能成功。
网上建议加 mode: no-cors,这样做是否正确?
ANSWERS
回答内容
CORS 是浏览器执行的同源安全机制。页面与 API 的协议、域名或端口不同,服务器需要明确允许该来源;Postman 不受浏览器同源策略约束,所以可能成功。
确认前端 Origin 与 API 地址。
在 API 服务端配置精确的允许来源和方法。
需要凭据时同时核对 Cookie、credentials 与允许凭据设置。
在预检请求和实际请求中检查响应头。
Access-Control-Allow-Origin: http://localhost:3000mode: no-cors 会得到不可读的 opaque response,不是真正解决。
携带 Cookie 或认证时不能随意把允许来源设为 *。
MDN:CORS:https://developer.mozilla.org/en-US/docs/Web/HTTP/Guides/CORS