DoneVII CET & CPPLITE

解决 AJAX 跨域方案二(Rewrite)

AJAX的跨域问题,一直是一个另广大程序员深为头痛的问题,虽然解决的方法很多,但是,都不太理想。
比如PHP里面,可以用file_get_contents类似的函数,将远程页面的HTML代码取回来,再交给AJAX来处理。 但此类通过服务器中转的方法,效率上,实在是不敢恭维,对服务器也会造成比较大的压力。
最近在看Apache相关的模块介绍的时候,发现了一个好东东,实验了一下,还真的似乎能解决这个问题,就是使用Apache自带的2个Mod,完成代理服务这个艰巨的使命。 这样,完全可以骗过JavaScript,爽啊。
首先你要启用这2个模块,需要在httpd.conf文件中,去掉这2个模块前面的注释符号。

程序代码 程序代码

LoadModule rewrite_module modules/mod_rewrite.so
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so

然后,需要添加Rewrite规则,比如:

程序代码 程序代码

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^/proxy/(.*)$ http://$1 [P,L]
</IfModule>

需要日志的话,可以加上:

程序代码 程序代码

RewriteLogLevel 9
RewriteLog logs/rewrite.log

好了,现在试试http://localhost/proxy/www.163.com看看,嘿嘿!

Leave a comment for: "解决 AJAX 跨域方案二(Rewrite)"

Tag Cloud