gpt4 book ai didi

python - Flask CORS - 重定向()上不存在访问控制允许来源 header

转载 作者:太空狗 更新时间:2023-10-29 18:05:56 25 4
gpt4 key购买 nike

我正在实现 OAuth Twitter 用户登录(Flask API 和 Angular)

当我单击“使用 Twitter 登录”按钮并打开一个弹出窗口时,我不断收到以下错误消息:

XMLHttpRequest cannot load https://api.twitter.com/oauth/authenticate?oauth_token=r-euFwAAAAAAgJsmAAABTp8VCiE. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access.

我正在使用 python-Cors 包来处理 CORS,并且我已经让 instagram 登录正常工作。我认为这与响应是重定向有关,但无法解决问题。

我的 flask 代码如下所示:

app = Flask(__name__, static_url_path='', static_folder=client_path)
cors = CORS(app, allow_headers='Content-Type', CORS_SEND_WILDCARD=True)
app.config.from_object('config')

@app.route('/auth/twitter', methods=['POST','OPTIONS'])
@cross_origin(origins='*', send_wildcard=True)
#@crossdomain(origin='')
def twitter():
request_token_url = 'https://api.twitter.com/oauth/request_token'
access_token_url = 'https://api.twitter.com/oauth/access_token'
authenticate_url = 'https://api.twitter.com/oauth/authenticate'

# print request.headers

if request.args.get('oauth_token') and request.args.get('oauth_verifier'):
-- omitted for brevity --
else:
oauth = OAuth1(app.config['TWITTER_CONSUMER_KEY'],
client_secret=app.config['TWITTER_CONSUMER_SECRET'],
callback_uri=app.config['TWITTER_CALLBACK_URL'])
r = requests.post(request_token_url, auth=oauth)
oauth_token = dict(parse_qsl(r.text))
qs = urlencode(dict(oauth_token=oauth_token['oauth_token']))
return redirect(authenticate_url + '?' + qs)

最佳答案

问题不在你。您的客户端应用程序正在向 Twitter 发送请求,因此需要支持 CORS 的不是您,而是 Twitter。但是 Twitter API 目前不支持 CORS,这实际上意味着您无法直接从浏览器与其对话。

避免此问题的常见做法是让您的客户端应用程序将身份验证请求发送到您自己的服务器(例如您拥有的同一个 Flask 应用程序),然后该服务器连接到 Twitter API .由于服务器端不受 CORS 要求的约束,所以没有问题。

如果您需要一些想法,我写了一篇关于为 Facebook 和 Twitter 执行此类身份验证流程的博客文章:http://blog.miguelgrinberg.com/post/oauth-authentication-with-flask

关于python - Flask CORS - 重定向()上不存在访问控制允许来源 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31487379/

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