A√ļn no tienes acceso a esta clase

Crea una cuenta y contin√ļa viendo este curso

Curso de Flask

Curso de Flask

Bernardo Cassina

Bernardo Cassina

Ciclos de Request y Response

8/36
Recursos

Request-Response: es uno de los métodos básicos que usan las computadoras para comunicarse entre sí, en el que la primera computadora envía una solicitud de algunos datos y la segunda responde a la solicitud.

Por lo general, hay una serie de intercambios de este tipo hasta que se envía el mensaje completo.

Por ejemplo: navegar por una página web es un ejemplo de comunicación de request-response.

Request-response se puede ver como una llamada telefónica, en la que se llama a alguien y responde a la llamada; es decir hacemos una petición y recibimos una respuesta.

Aportes 25

Preguntas 11

Ordenar por:

¬ŅQuieres ver m√°s aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesi√≥n.

Para los que no saben que son las cookies, aqui un video que explica muy bien, que son y para que sirven ūüėČ
https://www.youtube.com/watch?v=QFrUTDfYgnM

En mi caso a mí me aparece como None la IP

El codigo es vulnerable a XSS.
Una ves que la cookie user_ip es guardada en el browser, el usuario es capaz de modificarla y ejecutar lo que guste.

Para evitar esto, recomendaria importar escape de flask, y hacer lo siguiente:

@app.route("/hello")
def ip():
	user_ip = request.cookies.get('user_ip')
	user_ip = escape(user_ip)
	return "Tu ip es {}".format(user_ip)

Si no saben que es XSS, les dejo algunos recursos:

En espa√Īol:
https://www.youtube.com/watch?v=inCS6PQYu34

En ingles:
https://www.youtube.com/watch?v=EoaDgUgS6QA

Aqui hay información que nos puede ayudar: https://tedboy.github.io/flask/generated/generated/flask.Request.html

Les adjunto mi versión de código, la cual se ejecuta directamente desde el main.py

from flask import Flask, request, make_response, redirect


app = Flask(__name__)

@app.route('/')
def index():

    user_ip = request.remote_addr
    make = redirect('/hello')
    response = make_response(make)
    response.set_cookie('user_ip', user_ip)

    return response

@app.route('/hello')
def hello():    

    mensaje = 'Hola Mundo!!'
    user_ip = request.cookies.get('user_ip')

    return mensaje + user_ip

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

Tambi√©n pueden crear rutas din√°micas, copien el siguiente c√≥digo y en su navegador vayan a la ruta ‚Äú127.0.0.1:5000/hello/<user>‚ÄĚ y user sustit√ļyanlo por cualquier nombre.

Si quieren probar su proyecto en diferentes dispositivos conectados a su misma red pueden correr la aplicación con el comando

flask run --host=0.0.0.0

después solo escriben la dirección IP de la máquina en la que está corriendo la aplicación más el puerto ej. 192.168.0.3:5000

Code

from flask import Flask, request, make_response, redirect

app = Flask(__name__)

@app.route('/')
def index():
    user_ip = request.remote_addr

    response = make_response(redirect('/hello'))
    response.set_cookie('user_ip', user_ip)

    return response

@app.route('/hello')
def hello():

    user_ip = request.cookies.get('user_ip')

    return 'Hello Platzi, tu IP es {}'.format(user_ip)

Que ventajas tiene el utilizar redirect y cookies en la forma en la que se utilizó en esta clase?

Mis apuntes

En esta clase se hizo la creación de una nueva ruta donde se va guardar la ip en una cookie para luego ser redirigido a la nueva ruta donde se mostrara el mensaje que ya hicimos en las clases anteriores. Para ello se hizo lo siguiente;

  1. Crear una nueva ruta llamada hello @app.route('/hello')
  2. Importar los objetos make_response y redirect
  3. Crear la variable response = make.response(redirect(’/hello’))
  4. Asignarle una cookie con response.set_cookie(’user_ip’, user_ip)
  5. Retornar la variable response con return response
  6. En la ruta @app.route('/') asignar valor a la variable user_ip con user_ip = request.cookies.get('user_ip')
from flask import Flask, request, make_response, redirect

app = Flask(__name__)

@app.route('/')
def index():
    user_ip = request.remote_addr

    response = make_response(redirect('/hello'))
    response.set_cookie('user_ip', user_ip)

    return response

@app.route('/hello')
def hello():

    user_ip = request.cookies.get('user_ip')

    return 'Hello Platzi, tu IP es {}'.format(user_ip)

Este curso es uno de lo mejores y mejor explicados en los que he estado. Muy buen profesor, explica super claro y sin afanes.

acá encontramos los atributos y metodos de request aquí

Que son las cookies: Las cookies son usualmente son peque√Īos archivos de texto y se almacenan en el directorio del navegador de tu ordenador o en las subcarpetas de datos de programa.

Las cookies se crean cuando utilizas tu navegador para visitar un sitio web que las utiliza para hacer un seguimiento de tus movimientos por el sitio, ayudarte a indicarte dónde dejaste la navegación, recordar tu inició de sesión y selección de tema, preferencias y otras funciones de personalización.

A menudo las cookies son indispensables en las webs que tienen bases de datos muy grandes, requieren inicio de sesión, tienen temas personalizables y otras funciones avanzadas.


Mas informacion: Cookies

Que buen profe ūüėĄ

¬ŅAs√≠ de sencillo?

from urllib import response
from flask import Flask, request, make_response, redirect

app = Flask(__name__)

# Ciclo de Response
@app.route('/')
def index ():
    user_ip = request.remote_addr

    response = make_response(redirect('/hello'))
    response.set_cookie('user_ip', user_ip)

    return response

# Ciclo de Request
@app.route('/hello')
def hello ():
    user_ip = request.cookies.get('user_ip')
    return 'Hola Platzi, tu IP es {}'.format(user_ip)
# import main Flask class and request object
from flask import Flask, request

# create the Flask app
app = Flask(__name__)

@app.route('/query-example')
def query_example():
    return 'Query String Example'

@app.route('/form-example')
def form_example():
    return 'Form Data Example'

@app.route('/json-example')
def json_example():
    return 'JSON Object Example'

if __name__ == '__main__':
    # run app in debug mode on port 5000
    app.run(debug=True, port=5000)

Mi code

from flask import Flask, request, make_response, redirect


app = Flask(__name__)

@app.route('/')
def index():
    user_ip = request.remote_addr
    response = make_response(redirect('/hello'))
    response.set_cookie('user_ip', user_ip)
    return response

@app.route('/hello')
def hello():
    user_ip = request.cookies.get('user_ip')
    return 'Hello World Platzi, tu IP es {}'.format(user_ip)```

Me da el siguiente error:

NameError: global name 'make_response' is not defined

from flask import Flask, request, make_response, redirect
app = Flask(name)

@app.route(’/’)
def index():
user_ip = request.remote_addr
response = make_response(redirect(’/hello’))
response.set_cookie(‚Äėuser_ip‚Äô, user_ip)

return response

@app.route(’/hello’)
def hello_world():
#creamos nueva variable de la ip que detectamos en el browser
user_ip = request.cookies.get(‚Äėuser_ip‚Äô)

return 'Hello, Word, tu IP es {}'.format(user_ip)

  • Request-Response: es uno de los m√©todos b√°sicos que usan las computadoras para comunicarse entre s√≠.
  • redirect, redirecciona a otro lugar de la aplicaci√≥n.
  • response, podemos establecer las cookies de sesi√≥n de usuario.
  • request, para conseguir los datos enviados por el navegados como las cookies

Bien, gracias.

que sencillo, muy chevere

chevere