我正在尝试使用mod_proxy配置Apache以在本地开发Dart Web应用程序,但似乎无法正确设置它。
在我的httpd.conf中,启用了以下几行:
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
Include conf/extra/httpd-vhosts.conf
在httpd-vhosts.conf中,我尝试设置所需的内容,但是它似乎没有用。我有一个Spring Web应用程序,该应用程序是通过Jetty从Eclipse运行的。这样就在
http://localhost:8080
上。然后,我从Dart编辑器运行Dart,它最终显示在127.0.0.1:3030
上(尽管诸如“login”之类的请求的总路径是:http://127.0.0.1:3030/C:/Users/CorayThan/dart/BlightedRealmUi/web/out/login
)。无论哪种方式,我都试图让apache将请求从127.0.0.1:3030重定向到localhost:8080。我试图在httpd-vhosts.conf中这样做:
<VirtualHost *:80>
ServerAdmin test@localhost
ServerName 127.0.0.1:3030
ProxyPass / http://localhost:8080
ProxyPassReverse / http://localhost:8080
ErrorLog "logs/proxy-error.log"
</VirtualHost>
但这似乎根本没有用。有人可以建议我如何解决它,或者首先建议一种更好的方法吗? (我不想使用CORS或Jsonp,我只是想要一个易于跨浏览器兼容的hack进行开发。)
最佳答案
我不确定您是否可以执行此操作,您的VHost必须监听3030,而不是上面的80,才能执行代理功能,而Dart使用此端口则无法执行,以下是Vhost的摘录我用来从Dartium代理到CouchDb服务器的文件,以允许基于浏览器的CORSDB客户端使用CORS进行访问,但这可能不是您想要的:
<VirtualHost *:8080>
<Proxy http://141.196.22.210:5984>
Order deny,allow
Allow from all
</Proxy>
RewriteEngine on
RewriteCond %{REQUEST_METHOD} ^OPTIONS
Header set Access-Control-Allow-Origin http://127.0.0.1:3030
Header set Access-Control-Allow-Credentials true
Header set Access-Control-Allow-Headers Content-Type
Header merge Access-Control-Allow-Headers Authorization
Header merge Access-Control-Allow-Headers Destination
Header set Access-Control-Allow-Methods GET
Header merge Access-Control-Allow-Methods POST
Header merge Access-Control-Allow-Methods PUT
Header merge Access-Control-Allow-Methods OPTIONS
Header merge Access-Control-Allow-Methods DELETE
Header merge Access-Control-Allow-Methods HEAD
Header merge Access-Control-Allow-Methods COPY
Header set Access-Control-Max-Age 3600
ProxyRequests off
ProxyPreserveHost Off
KeepAlive Off
ProxyPass / http://141.196.22.210:5984/ nocanon
ProxyPassReverse / http://141.196.22.210:5984/
</VirtualHost>
因此,当我的客户端应用程序登录到Couch时,它将使用141.196.22.210:8080。
关于apache - 配置Apache以避免使用Dart进行跨域调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18247526/