猪,一个人的世界.

多看则清,多听则明,多思则准,多干则成.

使用Apache的Rewrite解决JavaScript的跨域问题

本篇日志由 PigZ 于 2009-04-07 23:12:25 发布在 网站技术 中.

关于各大浏览器对js跨域的限制不再敷述.
网上也有各种各样的解决办法,但都不是很完美.
翻看了一些资料后,尝试了一下,觉得apache的rewrite对跨域问题的解决还算不错.
把相关的重点事项记录一下.

1.首先要开启apache的rewrite和proxy模块.

修改apache配置文件,去掉以下三行前边的#号
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule rewrite_module modules/mod_rewrite.so

重启apache.
PS:如果未开启proxy模块,会导致rewrite规则中的P参数无效;如果rewrite模块未开启-.-那就…没的说了.

2.编写rewrite规则

RewriteEngine On
RewriteBase /
RewriteRule ^jump.*  http://www.zzjuhe.net/ [L,R,P,NC]
 

需要注意的是RewriteRule 后边的重写规则参数
L不解释了
R是强制外部重定向,因为是要跨域定向到外部域,所以必须有R
P是强制使用代理转发,这个也是必须的.
NC是不区分大小写,这个倒是可选,但是为了增加兼容性,最好还是加上.

这里特别要注意的是P参数,如果没有P参数,ie会弹出”该页正在访问其控制范围外的信息,这有些危险.是否继续?”的对话框.点”是”的话还是可以继续的;firefox会得到”302 Found”的错误提示.

做完以上工作后,就基本OK了,现在可以尝试用ajax请求http://pigz.cn/jump/,会发现得到的数据是apache已经重新定向了的http://www.zzjuhe.net/的数据.

上一篇:

下一篇:

4条评论.

方域2009-04-13 09:16:27 说:

写的真好阿。

nowbe2009-06-18 18:39:20 说:

猪头啊。你的mjjcms能不能给我发一份啊。

大牛2009-10-22 16:06:40 说:

写的太好了

红红2009-12-27 20:44:54 说:

路过瞅瞅

扯淡,还要MAIL

发表评论

您的大名:
(必填)
邮件地址:
(必填,不会被公开)
网站地址:
评论内容:

猪,一个人的世界. | 博客程序:Wordpress | 主题设计:PigZ

豫IPC备09001272号