首页 > 解决方案 > cors 请求获取响应

问题描述

好的,这么奇怪的错误。我有一个通过 fetch 函数获取数据的反应应用程序

fetch('https://port.abendago.com/index.php?controller=departments&route=getAll')

该应用程序位于firebase服务器上,因此不同的域等......

https://vanport-debba.web.app/

现在,在控制台中,我看到请求发出,服务器响应。如果我查看响应,我会在响应中看到数据(json 数据)。但是,控制台仍然给出 CORS 错误,我的应用程序没有对数据做任何事情。

在服务器上,我添加了所有各种 CORS 标头(您可以在上述 URL 的响应标头中看到)。我的服务器团队说我需要更改我的反应服务器上的某些内容?或反应应用程序?我一直在尝试各种东西,但没有任何效果。

网络服务器(端点服务器)正在运行 plesk 和 apache 和 nginx

标签: javascriptreactjscors

解决方案


原因可能仍然与服务器有关。我尝试 cors 请求上述 url 并得到如下响应标头:

Access-Control-Allow-Origin: '*'
Access-Control-Allow-Origin: 'https://vanport-debba.web.app/'
Access-Control-Allow-Origin: 'https://vanport-debba.web.app'
Access-Control-Allow-Origin: https://vanport-debba.web.app/
Access-Control-Allow-Origin: https://vanport-debba.web.app
Access-Control-Allow-Origin: *

如您所见,它发送了多个响应标头,Access-Control-Allow-Origin这正是我遇到的 cors 错误:

CORS 策略已阻止从源“ http://localhost:3000 ”获取“ http://port.abendago.com/index.php?controller=departments&route=getAll ”的访问权限:“访问控制允许” -Origin'标头包含多个值' http://localhost:3000 '、'*'、' https : //vanport-debba.web.app/'、'https : //vanport-debba.web.app'、https ://vanport-debba.web.app/https://vanport-debba.web.app, *',但只允许一个。让服务器发送带有有效值的标头,或者,如果不透明的响应满足您的需求,请将请求的模式设置为“no-cors”以获取禁用 CORS 的资源。

IE

“Access-Control-Allow-Origin”标头包含多个值

让服务器发送具有有效值的标头

如果您查看Mozilla 开发人员文档,它会提到

服务器发送了多个 Access-Control-Allow-Origin 标头。这是不允许的。

让您的服务器团队重新审视这一点并查看 cors 配置。它应该简单地返回Access-Control-Allow-Origin: *


推荐阅读