gpt4 book ai didi

python - flask 重定向 "XMLHttpRequest cannot load..."错误本地主机

转载 作者:行者123 更新时间:2023-11-30 22:49:39 24 4
gpt4 key购买 nike

在本地运行flask,尝试调用:

@app.route('/foo_route', methods=['POST'])
@cross_origin(origin='*')
def foo():
return redirect("https://www.google.com/")

我收到以下错误:

XMLHttpRequest cannot load https://www.google.com/. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://127.0.0.1:5000' is therefore not allowed access

我尝试使用 CORS:

app = Flask(__name__)
CORS(app)

以及我路线上的@cross_origin()。这里出了什么问题?我读到这可能是本地运行时的 chrome bug?.

最佳答案

我也遇到了同样的问题!这不是 Chrome 的 bug,它是为了安全而内置于 Chrome 中的。 (跨源资源共享)是 apache httpd.conf 或 apache.conf 或 .htaccess 配置文件中必须存在的 header 。如果您使用 NGINX,则必须编辑 defaults.conf 或 nginx.conf 文件 它基本上使 Web 服务器接受来自其自己域以外的地方的 HTTP 请求。修复它的“真正”方法是实际进入 Web 服务器(通过 ssh)并编辑适用的 .conf 以包含此 header 。如果您使用的是 apache,则需要在文件顶部添加 Header set Access-Control-Allow-Origin "*" 。执行此操作后,重新启动 apache 以确保保存更改(service httpd restart)。如果您使用 NGINX,请使用此配置:

   #
# Wide-open CORS config for nginx
#
location / {
if ($request_method = 'OPTIONS') {
add_header 'Access-Control-Allow-Origin' '*';
#
# Om nom nom cookies
#
add_header 'Access-Control-Allow-Credentials' 'true';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
#
# Custom headers and headers various browsers *should* be OK with but aren't
#
add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';
#
# Tell client that this pre-flight info is valid for 20 days
#
add_header 'Access-Control-Max-Age' 1728000;
add_header 'Content-Type' 'text/plain charset=UTF-8';
add_header 'Content-Length' 0;
return 204;
}
if ($request_method = 'POST') {
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Credentials' 'true';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';
}
if ($request_method = 'GET') {
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Credentials' 'true';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';
}
}

现在,我想,根据您的示例,您无权访问网络服务器(因为您将 google 的网址放入网址中)。这就是棘手的地方。

您的选择之一是使用 http://www.whateverorigin.org/ 。它绕过 CORS 并有效地检索数据。为了使用它,您将运行:

$.getJSON('http://whateverorigin.org/get?url=' + encodeURIComponent('http://google.com') + '&callback=?', function(data){
alert(data.contents);
});

无论 Web 服务器上是否存在 CORS,这都会检索响应。

如果您不想更改任何现有代码并且使用的是 Google Chrome,则有一种方法可以解决此 CORS 问题。您可以做的一件事是安装此浏览器扩展:https://chrome.google.com/webstore/detail/allow-control-allow-origi/nlfbmbojpeacfghkpbjhddihlkkiljbi?utm_source=plus你可以绕过 CORS 并运行你的程序。

希望这对您有用!

关于python - flask 重定向 "XMLHttpRequest cannot load..."错误本地主机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39671533/

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