我正在测试新的API网关,以保护React应用程序的云功能。到目前为止,这个过程比以前的替代方案要好得多,但我目前在试图从React应用程序访问API网关时遇到了CORS错误。我在云函数中正确地设置了CORS头,但我没有在API网关endpoint上做同样事情的方法。我正在使用Postman测试对网关endpoint的请求,一切都很好,所以这正是我从React应用程序请求的时候。
错误:“从'https://my-gateway-a12bcd345e67f89g0h.uc.gateway.dev/hello?key=example'获取资源的访问权限'https://example.netlify.app'已被CORS策略阻止:对飞行前请求的响应未通过访问控制检查:请求的资源上没有'Access-Control-Allow-Origin'标头。如果不透明的响应满足您的需要,请将请求模式设置为'no-cors'以获取禁用CORS的资源。”
希望对这个问题有所了解。谢了!
这还不受支持,但是,有一个临时的解决方案来使其工作。您应该向openapi.yaml
中的路径添加选项
。此外,get
和options
操作都应该指向同一个云函数,因为options
请求充当云函数的预热请求。就延迟而言,这是最有效的设置。下面是一个简化的例子:
paths:
/helloworld:
get:
operationId: getHelloWorld
x-google-backend:
address: $CLOUD_FUNCTION_ADDRESS
responses:
'200':
description: A successful response
options:
operationId: corsHelloWorld
x-google-backend:
address: $CLOUD_FUNCTION_ADDRESS
responses:
'200':
description: A successful response
然后,在您的云函数后端,您还必须处理飞行前请求(源)。Google文档还提供了一个带有身份验证的示例,其中有一些额外的标题。下面是一个没有身份验证的示例:
def cors_enabled_function(request):
# For more information about CORS and CORS preflight requests, see
# https://developer.mozilla.org/en-US/docs/Glossary/Preflight_request
# for more information.
# Set CORS headers for the preflight request
if request.method == 'OPTIONS':
# Allows GET requests from any origin with the Content-Type
# header and caches preflight response for an 3600s
headers = {
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Methods': 'GET',
'Access-Control-Allow-Headers': 'Content-Type',
'Access-Control-Max-Age': '3600'
}
return ('', 204, headers)
# Set CORS headers for the main request
headers = {
'Access-Control-Allow-Origin': '*'
}
return ('Hello World!', 200, headers)
注意:API网关不以适当的方式管理预请求的缺点会导致云函数运行两次。但是您的第二个请求应该总是非常快,因为第一个请求充当热身请求。
✔加200积分响应期权法 ✔将Access-Control-Allog-Headers,Access-Control-Allog-Methods,Access-Control-Allog-Origin方法响应头添加到OPTIONS ✔将Access-Control-Allow-Headers,Access-Control-Allow-Methods,Access-Control-Allow-Ori
我在ansible中有一个playbook,它可以从一个存储库中安装包含无效密钥的软件包: 但ansible无法更新缓存: 即使选项或选项设置为yes。如何用这些关键问题更新缓存? EDIT再现此行为的命令是: 但我可以继续发布命令 并在警告后安装软件包。Ansible正在考虑上面的警告(),这是Cloudera方面的一个错误,提供了错误的密钥或错误的签名存储库,但继续安装包: 因此,我试图实现的
请帮忙。我正在使用Spring Cloud Gateway,我不断收到以下Cors错误: CORS策略阻止从源http://localhost:4200在http://localhost:8084/users/files处访问XMLHttpRequest:对预飞行请求的响应无法通过权限改造检查:请求的资源上不存在“访问控制-允许-源”标头。 这是我的application.yml档案
我试图使用CloudFormation在API网关中部署一个API。这些方法要求启用CORS,我按照这里的模板在Cloudformation模板中启用CORS for API Gateway来做到这一点。这是我的模板 部署API后,方法返回一个200,响应标头如下 访问-控制-允许-起源→* 通过→1.1 sdlkfnsdlk.CloudFront.net(CloudFront) X-AMZ-CF
问题内容: 几天以来,我一直在为我的实习机会创建一个React Web应用程序,但是遇到了CORS错误。我正在使用最新版本的reactJS,并将其放在中,以下是用于获取的代码: 抱歉,由于公司规定,我无法发布该API的网址,但是,可以确认该API后端中没有CORS设置。 但是,在mozilla上运行时遇到以下错误 和 如果在chrome上运行,则会出现以下错误 和 和 另一件事是,我可以在浏览器中
在做了一些研究后,我发现这是一个CORS问题。我正在使用谷歌应用程序引擎与Python。这个错误是我可以修复的,还是API的bug?我已经设法用这个API做了一个POST请求,没有问题。我已经阅读了很多关于CORS的信息,但还没有找到解决这个问题的方法。 下面是GET请求的Javascript代码,它只是从Trello API复制/粘贴的,所以我不确定哪里出了问题: