簡體   English   中英

Python Flask應用程序使用Ajax將遠程服務器文本文件輸出到Web服務器並在網頁上顯示404找不到

[英]Python Flask app to output remote server text file to webserver using ajax and display on webpage getting 404 not found

我有一個運行我的網站的Web服務器(帶有Apache的Fedora),當前正在嘗試創建Flask應用,以接收來自我的app.js文件的AJAX調用,然后最終使用FTP獲取遠程文本文件的內容以進行輸出回到網站。

當我撥打AJAX電話時,遇到路線打我的Flask應用程序時遇到問題。 我相信我知道問題出在哪里,我的AJAX調用沒有撥打端口5000,這就是為什么我在控制台中看到404錯誤的原因。 但是,當我手動執行curl -X GET http://127.0.0.1:5000/index -d'test'我確實看到按預期返回了正確的index.html頁面。

因此,我的問題是,通常如何在Apache Web服務器上設置Flask?

這是我對Flask(app.py)的AJAX調用。

app.js:

$(function(){                // this call is returning 404 not found.
$('button').click(function(){
    $.ajax({
        url: '/index',    
        data: user,
        type: 'POST',
        success: function(response){
            console.log("Here is the success res: " + response + user);
        },
        error: function(error){
            console.log("Here is the error res: " + error + user);
        }
    });
});
});

這是我的Flask函數路由我的調用的地方。

app.py:

from flask import Flask, request, send_file, render_template, json
from ftplib import FTP                                                                      

app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'hello world!'

@app.route('/index', methods=['GET', 'POST'])
def index():
    return render_template('index.html')

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

所有偵聽端口80的進程:

# lsof -i:80
COMMAND     PID   USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
/opt/lamp  3179 daemon    4u  IPv6 2190211      0t0  TCP *:http (LISTEN)
/opt/lamp  6833 daemon    4u  IPv6 2190211      0t0  TCP *:http (LISTEN)
/opt/lamp  7665   root    4u  IPv6 2190211      0t0  TCP *:http (LISTEN)
/opt/lamp  7909 daemon    4u  IPv6 2190211      0t0  TCP *:http (LISTEN)
/opt/lamp  7919 daemon    4u  IPv6 2190211      0t0  TCP *:http (LISTEN)
/opt/lamp 10892 daemon    4u  IPv6 2190211      0t0  TCP *:http (LISTEN)
/opt/lamp 11676 daemon    4u  IPv6 2190211      0t0  TCP *:http (LISTEN)
/opt/lamp 11843 daemon    4u  IPv6 2190211      0t0  TCP *:http (LISTEN)
/opt/lamp 12345 daemon    4u  IPv6 2190211      0t0  TCP *:http (LISTEN)
/opt/lamp 12755 daemon    4u  IPv6 2190211      0t0  TCP *:http (LISTEN)
/opt/lamp 20204 daemon    4u  IPv6 2190211      0t0  TCP *:http (LISTEN)

此頁面詳細介紹了您的部署選項。

Flask(和一般的python應用程序)之間的最大區別在於,PHP本身就是一個模板系統。 對於您的Web服務器,每個PHP文件只是一個HTML文件。 請記住,按照其自身的定義,PHP是超文本處理器。

另一方面,Python Web應用程序是在服務器上運行的應用程序,可隨時處理請求並返回html。 基本上,您需要一方面能夠運行python應用程序,另一方面能夠處理來自外界的請求並返回網頁。

在您已經安裝了Apache且可以正常工作的安裝程序上,我將使用mod_wsgi / Apache方法 這使用Python Web服務器網關接口在運行的應用程序和Apache之間提供了紐帶。

您也可以使用Gunicorn ,但是如果您已經熟悉Apache,那么mod_wsgi可能是最好的。

值得注意的是,您僅應在完成測試后才部署應用程序,因為調試無法在任何分支環境中進行(如果可能,則存在巨大的安全風險)。 如果您的問題是本地測試的端口,請更改:

app.run()

至:

app.run('localhost', port='80', debug=True)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM