gpt4 book ai didi

python - 谷歌云函数 python CORS 错误 请求的资源上不存在 'Access-Control-Allow-Origin' header 。

转载 作者:行者123 更新时间:2023-12-03 23:14:58 25 4
gpt4 key购买 nike

我已按照 https://cloud.google.com/functions/docs/writing/http#functions_http_cors-python 的说明进行操作

所以我的代码最后有这个

 # 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 = {
'Content-Type':'application/json',
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Headers': 'Content-Type',
}

# END CORS

return (res, 200, headers)

其中 res 是 JSON

从一个简单的节点应用程序,我通过调用
this.http.post(payloadTarget.url, JSON.stringify(clone)).subscribe(res => {
console.log('request complete', res);
},
err => {
console.log('request failed', err);
});

我在控制台上收到此错误

No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:4200' is therefore not allowed access.



使用 Postman 测试 POST 或 OPTIONS 时,我没有看到错误,但我也没有看到我应该看到的 HEADERS

我确定它很简单,但是看着其他类似的问题和答案找不到任何指向我的问题的东西

最佳答案

我认为这里的问题是您遗漏了 POST从您的 OPTIONS 回复中。使用 CORS,您需要具体说明哪些 http 方法是可接受的。话虽如此,您需要将您的飞行前请求更新为:

    # 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, POST',
'Access-Control-Allow-Headers': 'Content-Type',
'Access-Control-Max-Age': '3600'
}

return ('', 204, headers)

# Set CORS headers for the main request
headers = {
'Content-Type':'application/json',
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Headers': 'Content-Type',
}

# END CORS

return (res, 200, headers)

或者,您可以将值设置为:
'Access-Control-Allow-Methods': '*'

如果您不那么关心安全性。

此外,您没有通过 POSTMAN 收到这些错误的原因是由于请求的性质 - 所有现代浏览器都会拦截您的请求并检查来源是否匹配(域、端口、协议(protocol)等),如果它们不匹配' t,向目的地发出飞行前 ( OPTIONS) 请求以确保其正常。像 POSTMAN 这样的网站和像 Fiddler 这样的软件不是从浏览器启动的,而是在没有任何检查的情况下提交的。

关于python - 谷歌云函数 python CORS 错误 请求的资源上不存在 'Access-Control-Allow-Origin' header 。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53035357/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com