0
votes

API de flacon déployé avec une erreur Heroku 'Cors bloquée'

J'ai des problèmes sur ma demande qui a été déployée à Heroku. Quand je le développais sur localhost, je n'ai pas reçu cette erreur, mais une fois que je l'ai déployé, il jette spontanément cette erreur: xxx pré>

version simplifiée de mon serveur de flacon: p>

from flask import Flask, request, make_response, jsonify, url_for, 
redirect, render_template
from flask_cors import CORS, cross_origin
import flask
import json

app = Flask(__name__)
CORS(app)

@app.route('/api/action', methods=['GET', 'POST'])
@cross_origin()
def prescription(response={}):

    # POST request
    if request.method == 'POST':
         print('score POST request')
         response = request.get_json()
         data = json.loads(response.get('data'))
         rating = a_super_cool_feature
         return jsonify(rating), 200

     # GET request
    else:
        print('GET request')
        return getScore(response)

@app.route('/api/score', methods=['GET', 'POST'])
@cross_origin()
def scoreHandler(response={}):

    # POST request
    if request.method == 'POST':
         print('Incoming..')
        response = request.get_json()
        parseResponse(response)
        return str(getScore(response)), 200


    # GET request
    else:
        return getScore(response)


@app.route('/test')
def test_page():
    # look inside `templates` and serve `index.html`
    return render_template('index.html')

if __name__ == "__main__":
     app.debug=True
     app.run()


1 commentaires

3 Réponses :


0
votes

Vous pouvez utiliser cet extrait pour activer l'application Cors. XXX


5 commentaires

J'ai ça en haut. J'ai essayé de commenter le "@cross_origin ()" s avec l'application informatique et il a la même erreur.


Avez-vous défini des en-têtes d'origine croisée tout en créant la demande?


Ce qui signifie dans le réagissage de la récupération? Est-il possible que le problème réside dans la manière dont la récupération est faite sur le front de réaction?


Qui bloque la demande? Le client / navigateur? Si oui, puis définissez les en-têtes d'origine croisée avant d'envoyer votre demande. Peut-être que cela ne vienne même jamais au backend.


J'apprécie vraiment l'aide!!!! Comment définira-je les en-têtes d'origine croisée avant d'envoyer la demande postale de réagir au flacon?



0
votes

Vraiment bizarre psuedo correction. Fondamentalement, il me donnait cette erreur sur environ 40% du temps que j'ai rendu la requête postale au backend de la fiole, puis j'ai ajouté xxx

sous le suivant: xxx

Et cela n'a pas correctement fixé le problème complètement. Toutefois; Maintenant, cette erreur est uniquement lancée à environ 5% du temps lorsque les demandes sont apportées à la fin du dos. Voir autre réponse pour le correctif réel.


2 commentaires

Qu'entendez-vous par les pourcentages? Vous en faites de la localhost ou de certains clients comme facteur où il fonctionnera par défaut mais pas avec la demande de production.


En postman, cela fonctionne. Voici ce que je veux dire avec les pourcentages: je déploierai de l'application, cliquez sur le bouton de l'application qui envoie une demande postale, consultez la console dans les éléments d'inspecter et la plupart du temps, cela fonctionne très bien. Toutefois, lorsque je rafraîchis la page et cliquez sur le bouton à nouveau, environ 5% du temps que je ferais cela que la console m'a donné l'erreur "Aucune erreur d'accès à l'origine d'accès".



0
votes

D'accord maintenant je l'ai réellement réparé. J'ai acheté le type "Hobby" Dyno Type à Heroku et je n'ai jamais reçu l'erreur maintenant. Je pense que cela a juste à voir avec l'autre serveur ne pas être opérationnel lorsque je fais la demande, car je ne peux qu'un seul dyno fonctionnant à la fois avec la version gratuite. Ainsi, cela a expiré en quelque sorte et donne cette erreur.

Avec le type de passe-temps Dyno Type, mon backend est toujours en cours d'exécution, alors quand je prends une demande, il ne se distingue plus et donne cette erreur.


0 commentaires