我正在关注此处文档中的flask-cors教程:https ://pypi.python.org/pypi/Flask-Cors
但是当我将它安装在我的树莓派上并运行我的 python 应用程序时,我收到了这个错误
Traceback (most recent call last):
File "app.py", line 3, in <module>
from flask_cors import CORS, cross_origin
ImportError: No module named 'flask_cors'
这是我的python脚本:
from flask import Flask
from Main import main
from flask_cors import CORS, cross_origin
app = Flask(__name__)
CORS(app)
main = main()
@app.route('/turn' ,methods=['GET', 'OPTIONS'])
def index():
return main.turn()
if __name__ == '__main__':
app.run(debug=True, host='0.0.0.0')
Run Code Online (Sandbox Code Playgroud) 我在本地运行Flask-Restful API并从不同的端口发送包含JSON的POST请求.我收到了错误
No 'Access-Control-Allow-Origin' header is present on the requested resource.
Run Code Online (Sandbox Code Playgroud)
但是,当我跑
curl --include -X OPTIONS http://localhost:5000/api/comments/3
--header Access-Control-Request-Method:POST
--header Access-Control-Request-Headers:Content-Type
--header Origin:http://localhost:8080
Run Code Online (Sandbox Code Playgroud)
我明白了
HTTP/1.0 200 OK
Content-Type: text/html; charset=utf-8
Allow: HEAD, GET, POST, OPTIONS
Access-Control-Allow-Origin: http://localhost:8080
Access-Control-Allow-Methods: DELETE, GET, HEAD, OPTIONS, PATCH, POST, PUT
Vary: Origin
Access-Control-Allow-Headers: Content-Type
Content-Length: 0
Run Code Online (Sandbox Code Playgroud)
其中"Access-Control-Allow-Origin"显示为"*".GET工作正常,只是POST给出了这个错误.怎么可能出错?如果相关,对于我正在使用的前端做出反应并通过axios请求.
我正在使用flask-cors来获取aws python aws lambda API.我用zappa部署它,它按预期工作.然而,cors并不适用于受https://github.com/awslabs/aws-apigateway-lambda-authorizer-blueprints/blob/master/blueprints/python/api-gateway-authorizer-python.py启发的自定义授权程序
我使用try/except更改了授权者代码,并在异常时为OPTION方法生成策略,仍然Option方法返回401.
如果它让事情变得简单,我不介意解决方法.
谢谢
我尝试了一种建议的解决方案:即在API网关中为401响应设置标头,遗憾的是浏览器预检需要成功的状态代码.
我有一个像这样设置的 Flask 应用程序
from flask import Flask
from flask.ext.cors import CORS
app = Flask( . . . )
app.debug = True
CORS(app, allow_headers='Content-Type')
Run Code Online (Sandbox Code Playgroud)
对于正确完成的路由,CORS 正常工作。但是,如果引发异常,则会生成没有 CORS 标头的调试输出。这意味着我无法在 chrome 中看到调试输出。我可以解决这个问题吗?
可以flask_cors在 Google Cloud Functions 中使用吗?
app = Flask(__name__)
cors = CORS(app)
Run Code Online (Sandbox Code Playgroud)
该flask_cors包在本地可以工作,但部署到 Cloud Functions 上时就不行了。
我尝试了很多不同的方法,正如 GCP 建议的那样https://cloud.google.com/functions/docs/writing/http 但我仍然收到 CORS 错误:
对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。
python cors google-cloud-platform flask-cors google-cloud-functions
我的网站有一个独立的前端和后端服务器,所以我的后端服务器需要开放CORS权限,以便前端可以从中请求数据。
我在开发中成功地使用了Flask-Cors ,但是当我部署到生产时它不起作用。 (请注意,我已经查看了关于 SO 的其他flask-cors 问题,但没有一个适合我的情况)
这是正在开发中的相关代码:
# 3rd party imports
import flask
from flask import Flask, request, redirect, send_from_directory, jsonify
from flask_cors import CORS
# Create the app
app = Flask(__name__)
CORS(app, origins=[
'http://localhost:5001',
])
# Define the routes
@app.route('/')
def index():
# no CORS code was necessary here
app.logger.info(f'request is: {flask.request}')
Run Code Online (Sandbox Code Playgroud)
我试过的:
'http://162.243.168.182:5001'的列表CORS是不是足以解决问题,但我的理解应该有。'*',允许所有起源并没有擦出火花。(非常可疑!)请注意,我使用的是 Docker 容器,因此开发和生产之间的环境几乎相同。但不同的是,我在不同的服务器上,我修改了前端以将请求发送到新的 IP 地址(导致著名的“Access-Control-Allow-Origin” header missingCORS 错误)。 …
我有一个 React 微服务(通过 nginx)部署到谷歌云运行上,其后端环境变量设置为另一个运行为后端服务的 Gunicorn 的谷歌云运行实例。
我的 Flask 应用程序是按照我能找到的有关允许 CORS 的所有内容进行设置的:
app = Flask(__name__)
app.config.from_object(config)
CORS(app, resources={r"/*": {"origins": "*"}})
app.config['CORS_HEADERS'] = 'Content-Type'
return app
# Different file, a blueprint's urls:
@blueprint.route('/resources')
@cross_origin()
def get_resources():
...
Run Code Online (Sandbox Code Playgroud)
但我仍然感到害怕Access to XMLHttpRequest at 'https://backend/resources/' from origin 'https://frontend' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
有谁对此有任何见解/知道在解决这个问题时还可以从哪里寻找?我想用我的微服务设置 GKE,但最初选择了阻力最小的路径,在云中建立 POC。我让后端与我的 Cloud SQL 实例对话,我已经很接近了!
谢谢
cors flask google-cloud-platform flask-cors google-cloud-run
我已经查看了许多 SO 答案,但似乎找不到这个问题。我有一种感觉,我只是错过了一些明显的东西。
我有一个基本的 Flask api,并且我已经实现了 flask_cors 扩展和自定义 Flask 装饰器[@crossdomain from Armin Ronacher]。1 ( http://flask.pocoo.org/snippets/56/ ) 两者都显示相同的问题。
这是我的示例应用程序:
application = Flask(__name__,
static_url_path='',
static_folder='static')
CORS(application)
application.config['CORS_HEADERS'] = 'Content-Type'
@application.route('/api/v1.0/example')
@cross_origin(origins=['http://example.com'])
# @crossdomain(origin='http://example.com')
def api_example():
print(request.headers)
response = jsonify({'key': 'value'})
print(response.headers)
return response
Run Code Online (Sandbox Code Playgroud)
(插入编辑 3):
当我在浏览器中(从 127.0.0.1 开始)从 JS 向该端点发出 GET 请求时,它总是返回 200,我希望看到:
Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://127.0.0.1:5000' is therefore not allowed access. The …Run Code Online (Sandbox Code Playgroud) 我需要调试帮助 - 同源策略不允许读取https://some-domain.com 上的远程资源。(原因:CORS 请求没有成功)在 python flask-socketio 错误中。
我正在使用 python flask-socketio 开发一个聊天应用程序。以前我在本地创建了该应用程序,它按预期工作正常,当我将下面的代码移动到服务器时,它显示了上述错误。客户端代码在 https 服务器上运行,服务器代码也在 https 服务器上运行,我不知道为什么会显示该错误。
我在下面附上了我的代码,请给我一个更好的解决方案。
服务器.py
import json
import os
from flask import Flask, render_template, request,session
from flask_socketio import SocketIO, send, emit
from datetime import timedelta,datetime
from flask_cors import CORS
app = Flask(__name__)
app.config['SECRET_KEY'] = 'secretkey'
app.config['DEBUG'] = True
app.config['CORS_HEADERS'] = 'Content-Type'
cors = CORS(app, resources={r"/*": {"origins": "*"}})
socketio = SocketIO(app)
users = {}
@app.before_request
def make_session_permanent():
session.permanent = True
app.permanent_session_lifetime = timedelta(minutes=1)
@app.route('/')
#@cross_origin(origin='*',headers=['Content- Type','Authorization']) …Run Code Online (Sandbox Code Playgroud) 我是烧瓶和角度的新手,请耐心等待。
\n\n我一直被 CORS 的问题困扰。我应用了不同的代码修复只是为了使其工作。现在我得到的错误是
\n\nAccess to XMLHttpRequest at \'http://localhost:5000/dashboard/clientscount/2019/2020\' from origin \'http://localhost:8080\' has been blocked by CORS policy: Response to preflight request doesn\'t pass access control check: It does not have HTTP ok status.\nRun Code Online (Sandbox Code Playgroud)\n\n我认为我的问题的答案来自这篇文章的已回答问题:已被 CORS 策略阻止:对预检请求的响应不\xe2\x80\x99t 通过访问控制检查,特别是此代码
\n\nif r.Method == "OPTIONS" {\n w.WriteHeader(http.StatusOK)\n return\n}\nRun Code Online (Sandbox Code Playgroud)\n\n但这是用go语言写的。我正在烧瓶中工作。我的问题是如何在烧瓶中制作这个?同样在参考答案中,它说响应最初的请求,但我不确定如何继续该请求。
\n\n如果您能为我指出正确的方向或文档,我将非常感激。
\n该Access-Control-Allow-Origin响应头的请求匹配Origin头,但我仍然得到错误
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://myappname.herokuapp.com/api/v1/products. (Reason: CORS request did not succeed).[Learn More]
响应头
HTTP/1.1 308 PERMANENT REDIRECT
Connection: keep-alive
Access-Control-Allow-Credentials: true
Access-Control-Allow-Headers: authorization, content-type
Access-Control-Allow-Methods: DELETE, GET, HEAD, OPTIONS, PATCH, POST, PUT
Access-Control-Allow-Origin: http://localhost
Content-Length: 311
Content-Type: text/html; charset=utf-8
Date: Thu, 04 Apr 2019 10:03:39 GMT
Location: http://mpappname.herokuapp.com/api/v1/products/
Server: waitress
Via: 1.1 vegur
Run Code Online (Sandbox Code Playgroud)
请求头
Host: mpappname.herokuapp.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:66.0) …Run Code Online (Sandbox Code Playgroud) flask-cors ×11
flask ×8
cors ×7
python ×6
angular ×1
aws-lambda ×1
axios ×1
docker ×1
raspberry-pi ×1
webserver ×1
zappa ×1