Flask kullanarak bir api sitesi oluşturmaya çalışıyorum ve belirteci belirtimi sağlamak için Flask-jwt
kullanıyorum.
authorizaiton ben yerine joker kullanarak daha detaylı erişim denetimi sahip olmak istiyorum, ancak bujwt auth sarıcı uygulandığında flask-cors sarıcı çalışmıyor.
Header set Access-Control-Allow-Origin "*"
gibi (Allow-Erişim başlıkları eklemek için mod_headers kullanarak Apache CORS'yi yaparsanız sorunsuz çalışıyor. Ve Ben . kökenini kontrol etmek ve başlık göndermek için güzel sarıcı olan flask-cors
baktı ve şimdi benim rota böyle görünüyor (ve apache ayarlarında hiçbir başlığı manipülasyon)
@app.route('/protected/place')
@cross_origin(headers=['Content-Type']) # Send Access-Control-Allow-Headers
@jwt_required()
def my_view_func():
do something
Ama şimdi Acces almazsınız javascript'ten http isteği yaparsam s-Control üstbilgileri sunucudan yanıt verir. (Ancak, el ile gönderirseniz, curl yapmak gibi, hala çapraz kaynaklı eklentinin çalışmasını ve Erişim denetimi üstbilgilerini görebiliyorum)
@jwt_required
sarıcısını kaldırdığımda, cross_origin sarıcı işlevi düzgün çalışıyor ve bana yanıt verecektir. Jwt_required sarıcı uygulandığında , sunucudan yanıt görünmeyebilir.
Müşteri sayfamı krom ile hata ayıklama yapıyorum. BTW
Sarmalayıcıların sırasını değiştirmeyi denedim, ancak yardımcı olmuyor.
mümkün mü, o kimlik doğrulama başarısız olursa, Erişim Kontrol başlıkları göndermez cross_origin sarıcı?iki sarmalayıcıların kaynak kodu:
şişesi-jwt:
https://github.com/mattupstate/flask-jwt/blob/master/flask_jwt/init.py
şişesi-cors:
https://github.com/wcdolphin/flask-cors/blob/master/flask_cors.py
gibi
saatlerce mücadele sonra sonunda sorunu buldum. Umut, aynı sorunu kodlayan başkalarına yardımcı olur. Sadece 'kimlik gerekiyorsa app.route @ bu '' ' gibi. Erişim-Control-Allow-Headers'' etmek ('/ korumalı/yer') @cross_origin (başlıklar = [ "Yetkilendirme eklemem gerekiyor 'Content-Type', 'Yetki']) # Gönder Erişim-Control-Allow-Başlıkları @jwt_required () def my_view_func(): '' ' –
biliyor musunuz bir şey/auth' etmek CORS'yi eklemek için bir yol yapmak handler? –
@YangHu Gönderim için çok teşekkürler, aslında CORS uzantısını nasıl kullandığımı değiştirmeme neden oldu.Genel olarak (aynı zamanda her görünüm işlevinde dekoratör kullanılmasının aksine) aynı şeyi yapabileceğinizi keşfettim. '' 'CORS (app, origins =" http://127.0.0.1:8080 ", allow_headers = [" İçerik Türü "," Yetkilendirme "aracılığıyla , "Erişim-Kontrol-İzin-Kimlik Bilgileri"], supports_credentials = Doğru) '' '. @Nikolay Fominyh Eğer uzantıyı kullanmıyorsanız, dekoratörler aşağıdaki gibi bir görünümde yığabilirsiniz: '' '@.route ('someurl /') @cross_origin (burada yapılandırmanızın) @ auth.login_required def some_view(): ... '' ' – AdjunctProfessorFalcon