我在同一VPS(ubuntu),同一域上有2个应用程序。首先是运行在端口80上的Node.js应用 第二个是Python(Flask)应用程序,在端口:3000下的apache下运行 python应用程序具有带有一个端点/ test的简单API。
我试图直接在浏览器中或从其他服务器使用Postman连接到端点,并且它可以工作。但是,当尝试从同一服务器上的Node应用程序连接时,我得到404。CORS被禁用。
有什么问题吗?
例如:
我的Flask应用程序的端点正在http://myvps.com:3000/test上运行
尝试在计算机或其他服务器上获取数据时
fetch('http://myvps.com:3000/test').then(...)
有效。另外,当我在浏览器中访问myvps.com:3000/test时,它也可以正常工作。
但是,当在我的Node应用程序上执行相同的操作fetch('http://myvps.com:3000/test').then(...)
时(在保存服务器上,但端口:80- http://myvps.com),则获取返回404-未找到。任何其他外部API均可使用。
虚拟主机配置:
<VirtualHost [server_ip]:3000>
ServerName ....
ErrorLog /home/www/python/logs/error.log
CustomLog /home/www/python/logs/access.log combined
WSGIDaemonProcess pythonapp user=www-data group=www-data threads=5 python-path=/home/www/python/pythonapp:/home/www/python/pythonapp/env/lib/python3.6/site-packages
WSGIProcessGroup pythonapp
WSGIScriptAlias / /home/www/python/pythonapp/pythonapp.wsgi application-group=pythonapp process-group=pythonapp
<Directory /home/www/python/>
Order Allow,Deny
Allow from all
Require all granted
</Directory>
Header set Access-Control-Allow-Origin "*"
Header set Access-Control-Allow-Methods "POST, GET, OPTIONS, DELETE, PUT"
Header set Access-Control-Max-Age "1000"
Header set Access-Control-Allow-Headers "x-requested-with, Content-Type, origin, authorization, accept, client-security-token"
</VirtualHost>
Node.js应用程序正在Express上运行。
答案 0 :(得分:0)
我整天都在奋斗,在这里张贴1小时后才找到原因...
问题是虚拟主机配置。我将<VirtualHost [server_ip]:3000>
更改为<VirtualHost *:3000>
,它开始正常工作。
感谢您的答复!