服务器配置难免的,作为一个java web开发人员,配置apache和tomcat是常有的事,下面看看apache代理解决Javascript跨域问题
由于前端解决跨域问题的局限性比较大,对于 Ajax 跨域或是 iframe 跨域,建议用服务器端解决方案。
此方案的原理是接受客户端发来的请求后,经由本域服务器代理向目标服务器发送请求,并将响应数据返回给客户端。
用 apache 的 mod_proxy 模块开启反向代理功能来实现:
1 修改 apache 配置文件 httpd.conf ,去掉以下两行前面 # 号
LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_http_module modules/mod_proxy_http.so
2 在 server config 或 virtual host 中增加:
ProxyRequests Off <Proxy *> Order deny,allow Allow from all </Proxy> ProxyPass /folder http://****.com/floder
重启 apache.
注释:
-
ProxyRequests Off
指令是指采用反向(reverse)代理,对于客户端而言它就像是原始服务器,并且客户端不需要进行任何特别的设置;而正向代理允许客户端通过它访问任意网站并且隐藏客户端自身,因此必须采取安全措施以确保仅为经过授权的客户端提供服务。 -
ProxyPass
指令允许将一个远端服务器映射到本地服务器的 URL 空间中,此时本地服务器并不充当代理角色,而是充当远程服务器的一个镜像。/folder 是一个本地虚拟路径,http://****.com/floder 是一个指向远程服务器的部分 URL
如果不想对某个子目录进行反向代理时,可以用"!"指令。比如说:
ProxyPass /folder/exception ! ProxyPass /folder http://****.com/floder
将会代理除 /folder/exception 之外的所有对 http://****.com/floder 的请求。
也可以用 URL 重写的方法来实现
1 修改 apache 配置文件 httpd.conf ,去掉以下三行前面 # 号
LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_http_module modules/mod_proxy_http.so LoadModule rewrite_module modules/mod_rewrite.so
2 在 server config 或 virtual host 中增加:
<Location /folder> SetHandler proxy-server order allow,deny Allow from all </Location> RewriteEngine on RewriteRule ^/folder/(.*)$ http://****.com/floder [L,R=301,P,NC]
注释:
-
Location
指令提供了基于URL的访问控制,对于本域下的 /folder 目录下的任何资源的访问都会首先由proxy-server这个 handler(mod_proxy模块内部定义的一个 handler)来处理。 -
SetHandler proxy-server
指令是强制所有匹配的文件被一个代理服务器处理。 -
RewriteEngine on
指令是指打开重写引擎。 -
RewriteRule
指令是重写规则。-
last|L
这个标记用于阻止当前已被重写的 URL 被后继规则再次重写。 -
redirect|R [=code]
若Substitution以http://thishost[:thisport]/(使新的URL成为一个URI)开头,可以强制性执行一个外部重定向,是跨域或定向到外部域的必备良药。默认为 HTTP 响应码为 302, 我通常指定为301。 -
proxy|P
此标记使替换成分被内部地强制作为代理请求发送,表明该 rewrite 是通过 mod_proxy 代理过去,而不是通过外部重定向过去。 -
nocase|NC
忽略大小写,也就是在Pattern与当前 URL 匹配时,’A-Z’和’a-z’没有区别。
-
相关推荐
主要介绍了Apache中配置支持CORS(跨域资源共享)实例,本文给出了一个完整的apache、PHP、JavaScript结合实现的跨域资源共享实例,需要的朋友可以参考下
f2ajax-testajax前端接口调试工具使用apache访问推荐apache反向代理解决跨域问题
2.2.17-win32-x86-no_ssl.msi,安装完成后,我们需要配置一下,由于jwchat是用javacript去和openfire进行通讯的,所以他们之间的通讯是基于http的,但是由于浏览器为了安全性是不允许javascript跨域访问的。...
在单个服务器中一起运行 NodeJS、Apache、Nginx 等。 安装 在安装代理路由器之前,请确保您的机器中安装了 NodeJS、NPM 和 Forever。 另外,如果您将 NodeJS 应用程序注册到代理路由器,请小心,因为我们使用了...
Jetty是一个纯Java实现的开源Servlet容器,Jetty也可以作为HTTP服务器和HTTP客户端,Jetty仪器轻巧...众所周知因为安全的原因,多数浏览器都限制了Ajax跨域请求和javascript加载的时候只能是与当前域下的应用进行交互。
(2)跨域数据交互问题。不同的Webview之间无法共享数据。(3)页面自适应问题。页面难以兼容适应不同分辨率的设备和浏览器。 本文研究并设计了基于Android+HTML5的在线认证检测系统,主要工作包括以下四个方面: ...
架构:RDF/OWL 设计与 Protégé ● Java crawler4j 中的网络爬行 ● 动态页面:○ 服务器端使用 Python NLTK、cherrypy、rdflib ○ 客户端使用 Javascript jQuery ○ 跨域兼容 PHP ● 通过网络浏览器进行用户交互 ...
JavaScript(TypeScript) Python 服务器脚本、科学计算、机器学习 C、C++ 其他语言 Ruby、LUA、Swift、OC、Kotlin、Rust、Scala、R Linux Shell Web 服务器 Nginx Apache 数据库 MySQL 字符集和排序规则 存储引擎 ...
10.10 检查跨域访问 226 10.11 通过JSON劫持来读取私有数据 227 第11章 操纵会话 229 11.1 在Cookie中查找会话标识符 230 11.2 在请求中查找会话标识符 232 11.3 查找Authentication头 233 11.4 分析会话ID过期 235...
本书中的秘诀演示了开发和测试人员在进行单元测试、回归测试或探索性测试的同时,如何去检查最常见的Web安全问题。与即兴的安全评估不同的是,这些秘诀是可重复的、简洁的、系统的——可以完美地集成到你的常规测试...
XML越来越热,关于XML的基础教程网络上也随处可见。可是一大堆的概念和术语往往让人望而生畏,很多朋友问我:XML到底有什么用,我们是否需要学习它?我想就我个人学习过程的心得和经验,写一篇比较全面的介绍文章。...
python入门到高级全栈工程师培训视频学习资料;本资料仅用于学习,请查看后24小时之内删除。 【课程内容】 第1章 01 计算机发展史 ...15 再插两道JavaScript面试题 16 Model操作之select_related以及...