Использование python3 и flask для получения URL с другого сервера - PullRequest
0 голосов
/ 07 апреля 2019

Использование этого дополнения stackoverflow ( Загрузка HTML-страницы в фрейм HTML с использованием Flask ) в качестве руководства и, будучи новичком во Flask, мне было интересно, как можно получить другой URL (скажем ---> https://www.afl.com.au/ в качестве примера) для отображения в рамке (или iframe) в моем собственном приложении, которое использует Flask и Python3, а работает локально (т.е. на локальном хосте) на моем собственном ПК?

У меня такое чувство, что мне придется использовать Apache или CURL или ...?и вызвать его для обработки запроса?
Если это так, то как перенаправить содержимое с другого веб-сайта в фрейм (или iFrame) в моем приложении?

ОК - извиняюсь, за что яЯ не уверен, но, учитывая отсутствие ответов, я полагаю, что совершил какой-то кардинальный грех, о котором я не знаю ... Я копал / исследовал (см. ниже) ... Я могу приблизиться к цели, но содержаниеВторой URL (compjour.org), использующий «embed», не всегда работает на практике, поэтому мне было интересно, если кто-нибудь мог бы пролить свет на то, почему это так?

Дальнейшая работа показывает, что я могусделайте это ... вот мой пример кода - он работает для URL 'http://www.bom.gov.au/wa/observations/index.shtml', но не второй для YouTube.(обратите внимание, что файл frameset2.html находится в том же Dir, что и код app.py.) и код frameset2 выглядит следующим образом:

<html><iframe src='{{src}}' width="853" height="480" frameborder="0"  allowfullscreen></iframe></html>

Также я встречал это приложение http://www.compjour.org/lessons/flask-single-page/simple-youtube-viewing-flask-app/, но чтоони говорят, что embed больше не работает (не всегда) на вашей трубе.

Есть идеи, пожалуйста?

app.py

from flask import Flask, render_template, request
import os

app = Flask(__name__)
# page = 'index.html'
# page = 'http://www.bom.gov.au/wa/observations/index.shtml'
page = 'https://www.youtube.com/watch?' + 'v=Ov7-FC0KHQA&feature=youtu.be'

os.chdir(r"C:\Users\blah blah ") #not the real dir of course
                                 # all code is in same dir

@app.route('/')
def home():
    return render_template('frameset2.html', src=page)


app.run()

frameset2

1 Ответ

0 голосов
/ 11 апреля 2019

Причина, по которой URL-адрес Youtube работает неправильно, заключается в том, что они специально отключили возможность отображения Youtube в кадре. Это делается путем отправки заголовка HTTP x-frame-options: SAMEORIGIN с ответом от YouTube. Обойти это невозможно, если вы не установите какое-либо расширение для браузера (с другой стороны, спецификация не заботится о том, чтобы вы отображали их информацию во фрейме).

Вы можете убедиться в этом, проверив консоль в своем браузере, чтобы увидеть, отображаются ли какие-либо ошибки во время загрузки страницы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...