2012-04-02 92 views
3

我正在开发一个web应用程序和静态文件我简单地使用apache在localhost而后端在一个couchdb实例运行在localhost:5984使用代理而不是使用htaccess重定向rewriteRule

webapp始终与来自后端的文件进行交互。因此,当试图测试Apache所有文件请求到localhost:5984时,发生了什么情况会因为跨域策略而被阻止,因此实现这一目标的唯一方法是通过设置标志来忽略该问题来启动浏览器。

但是当我尝试在移动设备上测试应用时,例如ipad或iphone,我又陷入了困境。

目前我有这个在我的.htaccess文件。

RewriteEngine on 

# these are 302 http redirections instead of serving as a proxy 
RewriteRule auth http://localhost:5984/auth [L] 
RewriteRule db/([\s\S]+) http://localhost:5984/db/$1 [L] 
RewriteRule send/([\s\S]+) http://localhost:5984/send/$1 [L] 

# these are just redirections to static files and work great 
RewriteRule ^([a-z/.]+) _attachments/$1 [L] 
RewriteRule ^$ _attachments/ [L] 

正如你所看到我真的不知道如何处理Apache配置不幸。 但现在发生的事情是,对于这些规则中的一些,apache只是简单地重定向页面,而不是将其作为代理服务器提供,从而导致跨域问题。

同样在第一个auth规则中,我发送POST和DELETE请求,它们作为重定向而不是代理,它不会传递正在发送的数据。

所以我想实现的是激活某种功能(如果它存在),这将使apache简单地呈现页面,因为它位于localhost域而不是重定向它。 (我将它命名为代理,但也许这不是正确的术语,对命名错误感到抱歉)。

是否可以实现这样的动作? 在此先感谢

+0

** 1)**看'[P]'flag:http://httpd.apache.org/docs/current/rewrite/flags.html#flag_p AND http://httpd.apache.org/docs/current/rewrite/proxy.html; ** 2)** mod_proxy(也许 - #1应该足够,如果它在同一台服务器上) - http://httpd.apache.org/docs/current/mod/mod_proxy.html – LazyOne 2012-04-02 11:59:09

+0

LazyOne,非常感谢,[P]国旗的工作,事实上我曾尝试过,但我认为它没有工作,因为我没有得到我想要的屏幕上。事实证明,这些请求确实是通过传输到couchdb,问题是在那里处理请求。但是,由于您的链接,我绝对可以更好地理解要做什么。非常感谢。如果您不介意将您的评论标记为答案,我会高兴地将其标记为正确。再次感谢 – zanona 2012-04-02 16:01:35

回答