在 Create React App 中允许访问控制来源

发布日期:2026-07-03 21:05:05   来源 : 杭州电子商务研究院    浏览量 :8
杭州电子商务研究院 发布日期:2026-07-03 21:05:05  
8

介绍

在 Web 应用中,浏览器使用SameSite策略来阻止跨域 XMLHttpRequest 或 Fetch 请求。简单来说,默认情况下不允许从https://main.pluralsight.comhttps://api.pluralsight.com发出请求。

在本指南中,您将了解跨域资源共享 (CORS) 以及“允许访问控制源”标头的作用。借助本指南中的知识,您将发现解决与 CORS 相关的问题变得轻而易举。

了解 CORS

由于默认情况下不允许从不同的域发出请求,因此在本指南中,我们将分别使用https://main.pluralsight.comhttps://api.pluralsight.com作为域 A 和 B。随着 CORS 的引入,域 A 和 B 现在可以相互共享资源,而不会被浏览器阻止。

根据维基百科,“跨域资源共享 (CORS) 是一种允许从提供第一个资源的域之外的另一个域请求网页上的受限资源的机制。”

浏览器使用两种方法来验证两个域之间共享资源的能力。

1. 简单请求

在一个简单的请求中,浏览器发送一个带有Origin标头的 GET 请求,该标头的值为请求者的域,如下所示。

      Origin: https://main.pluralsight.com
    

然后,服务器会使用Access-Control-Allow-Origin标头进行响应,其中包含允许请求的域。这也可能是用星号 (*) 表示的通配符。

      Access-Control-Allow-Origin: http://main.pluralsight.com

										OR a wildcard

Access-Control-Allow-Origin: *
    

2. 预检请求

在这个方法中,浏览器首先向服务器(在本例中为服务器 B,[https://api.pluralsight.com](https://api.pluralsight.com))发送一个带有OPTIONS方法的请求,以确定是否允许发送请求,因此称为预检请求。

要求

      OPTIONS /
Host: api.pluralsight.com
Origin: https://main.example.com
    

回复

      Access-Control-Allow-Origin: http://main.pluralsight.com
Access-Control-Allow-Methods: PUT, DELETE
    

收到响应后,服务器 A(https://main.pluralsight.com)具有与服务器 B(https://api.pluralsight.com)“对话”的必要权限,然后主请求将发送到服务器 A。(有点像派对上的保镖😉)。

Create-React-App 中的 CORS

现在您已经了解了 CORS,但是如何在 Create-React-App 中将其整合在一起?与往常一样,Create-React-App 提供了一种简单的方法来处理此问题:将代理字段添加到 package.json 文件,如下所示。在这种情况下,从服务器 A 向服务器 B 发出请求(https://api.pluralsight.com)。

      "proxy": "https://api.pluralsight.com:8000",
    

任何 Create-React-App 无法识别的路由现在将自动代理到提供的 URL。

如果不这样做,您可能会遇到错误:

      Fetch API cannot load http://localhost:4000/api/todos. No 'Access-Control-Allow-Origin' 
header is present on the requested resource. Origin 'http://localhost:3000' is therefore 
not allowed access. If an opaque response serves your needs, set the request's mode to 
'no-cors' to fetch the resource with CORS disabled.
    

请注意,Create-React-App 将仅代理不具有text/html内容类型的请求。

结论

就是这样!在本指南中,您将了解什么是跨源资源共享以及浏览器如何处理跨源请求。要了解有关如何在 Create-React-App 中处理此问题的更多信息,请访问官方文档了解更多信息。

以上内容来自杭州电子商务研究院推送
关注
关于我们
热门推荐
合作伙伴
免责声明:本站部分资讯来源于网络,如有侵权请及时联系客服,我们将尽快处理
Copyright © 2025-2027 ToB产业网址导航 公安备案 浙公网安备33010602013138号 浙ICP备16025413号-9
支持 反馈 关注 数据