为什么 Postman 在 JavaScript 中不会出现“请求的资源上不存在 'Access-Control-Allow-Origin' 标头”错误?
问题
当我们尝试向一个与我们当前 URL(我们从中发出请求的 URL)来源不同的远程服务器发出网络请求时,我们很可能会由于 Web 中的不同来源问题而遇到 CORS 错误,而当使用 Postman 等工具时,我们可以成功避免此 CORS 错误。
我们需要解释通过 Web 请求和通过 Postman 等扩展程序请求时响应行为的差异。
解释
当我们使用 Web 浏览器向与页面所在域不同的域发出网络请求时,它会阻止该请求,甚至都不会通知或联系服务器,并且通常出于安全原因允许在同一来源中发出请求。
但是,当我们使用 Postman 或任何此类工具时,它们不受此策略的限制。网页可以使用 XMLHttpRequest 对象从远程服务器发送和接收数据,但它们受同源策略的限制,但像 Postman 这样的扩展程序不受此限制。扩展程序可以与其来源之外的远程服务器通信,这就是 Postman 成功发出请求而网页由于 CORS 错误而失败的原因。
广告