我有两个本地托管网站动态和静态页面的python服务器。
我在静态页面上的iframe中显示动态页面,并希望使用javascript mesh_vectors[idx1] += translate_1
mesh_vectors[idx2] += translate_2
方法将数据发送到父静态页面,但是我收到错误:
parent.functionx(data)
我可以在同一个端口上托管这两个端口,理想情况下运行一个脚本来启动静态和动态页面吗?
cgiserver.py
Uncaught SecurityError: Blocked a frame with origin "http://localhost:8001" from accessing a frame with origin "http://localhost:8000". Protocols, domains, and ports must match.
wsgiserver.py
import subprocess
from cherrypy import wsgiserver
def application(env, start_response):
if '/meas' in env['PATH_INFO']:
start_response('200 OK', [('Content-Type', 'text/html')])
pathargs = env['PATH_INFO']
args = pathargs.split('/')
participantid = args[2]
studyid = args[3]
repeatid = args[4]
proc = subprocess.Popen(['python3', 'cgi-bin/script-meas.py', participantid, studyid, repeatid], stdout=subprocess.PIPE)
line = proc.stdout.readline()
while line:
yield line
line = proc.stdout.readline()
wsgi_server = wsgiserver.CherryPyWSGIServer(('0.0.0.0', 8001), application)
wsgi_server.start()
答案 0 :(得分:0)
感谢您澄清您的需求。
在你的用例中有多个进程使用相同的IP /端口,你应该把它们放在第三个进程(apache / nginx / lighttpd /...).
考虑到您的问题,我认为您处于开发环境中,可能很难设置和配置网络服务器,因此您可以使用HTTP代理(找到SimpleHTTPProxy和ProxyHTTPServer以及相关的发布“seriously simple python HTTP proxy?”,但请查看网页了解更多信息;总的来说,这个解决方案并不容易......
一般的想法是配置第三个程序来监听端口(即:80)并根据请求的路径向任一后端提供请求;即:
当监听端口(比如端口80)的进程(比如apache)收到/meas
的请求时,它会将它重定向到wsgi服务器(在Unix套接字或端口8081上),如果它是对/cgi-bin
或/htbin
的请求,它会将其重定向到CGI处理程序(实际上Apache有一个cgi-bin模块,你可以删除这个后端)。