簡體   English   中英

獲取Javascript中運行的python服務器IP地址

[英]Get running python server IP address in Javascript

我的服務器上運行了一個python flask應用程序:

if __name__ == '__main__':
    port = int(os.environ.get("PORT", 6600))
    app.run(host='0.0.0.0', port=port)

而且我有一個JS腳本從該應用程序獲取信息,我不想每次部署或更改域時都手動更改JS腳本中的IP或域,所以我想問JS是否有辦法知道python應用程序的IP或主機名?

這是我的結構:
index.py <=主應用
靜態的
** index.html
** script.js

謝謝

注冊一個域名並堅持使用。 在您的JavaScript和/或配置中使用域名。

確保注冊商提供用於更新“ A記錄”(IP地址)並將其指向您的服務器的界面。 每當您更改IP地址時,都將更新您域的A記錄。

如果我正確理解了您的問題,則根據設置,您幾乎可以選擇兩種選擇。

選項1:如果您的JavaScript代碼與Python腳本在同一台計算機上運行,​​則始終可以僅從JavaScript代碼從127.0.0.1訪問它(因為綁定到0.0.0.0將使Python服務器可從所有接口訪問,包括位於127.0.0.1的環回接口)。

選項2:如果您的JavaScript代碼位於遠程服務器上,則最簡單的解決方案是使用某種動態DNS服務作為中介。 因此,您將為Python服務器最終獲得兩個域:一個靜態域可供世界其他地方使用,例如www.mypythonserver.com ,以及一個僅由您的JavaScript代碼知道的動態DNS條目,例如mypythonserver.noip.me (永久編碼到您的JavaScript代碼中)。 這兩個域都應始終解析為您的Python服務器的主機地址,動態DNS條目無需手動干預。

您可以在腳本文件中使用templating ,當用戶請求腳本時,該templating中將填充端口號。

有許多可用的模板:

https://wiki.python.org/moin/模板化

通常會像

  // in script.js
   var myport = {{ port }};

並在您的python代碼中:

# if request is for script.js 
# respond with template 
request.send(my_templating_engine('script.js' , port))

暫無
暫無

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

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