`

apache代理解决Javascript跨域问题

 
阅读更多

服务器配置难免的,作为一个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’没有区别。
分享到:
评论

相关推荐

    Geoserver跨域问题解决方案

    本篇文章将详细介绍如何解决Geoserver的跨域问题。 首先,我们需要理解跨域问题的背景。根据同源策略,浏览器只允许与同一源(协议+域名+端口)的请求进行通信。但在实际应用中,比如一个网站前端和Geoserver不在同...

    Geoserver解决Tomcat跨域问题文件.rar

    在Web开发中,跨域问题是一个常见的安全问题,它源于浏览器的同源策略,限制了JavaScript从一个源(域名、协议或端口)向另一个源发送请求的能力。当用户尝试通过一个源访问由不同源提供的资源时,就会遇到跨域问题...

    signalR跨域及解决方案

    总结起来,SignalR 跨域问题的解决方案主要依赖于 CORS 配置,同时可以结合其他技术如 JSONP、代理服务器、IFrame 和 PostMessage,以及 WebSocket 协议,根据实际项目需求选择合适的解决方案。正确配置后,SignalR ...

    JS跨域APACHE配置

    为了解决这个问题,开发者需要进行跨域配置。本文将详细介绍如何在Apache服务器上配置跨域策略,以便允许JavaScript从不同源请求数据。 首先,我们需要理解什么是CORS(Cross-Origin Resource Sharing,跨源资源...

    xmlhttp跨域解决方案

    为了解决这一问题,我们可以采用多种跨域解决方案,其中一种是通过设置代理服务器。 **一、什么是同源策略** 同源策略是浏览器为了保护用户安全而实施的一种安全策略,它规定浏览器只允许加载来自相同协议、域名和...

    pdf.js,内含跨域解决办法

    为了解决跨域问题,PDF.js 提供了几种解决方案: 1. 服务器端配置:在服务器端设置 CORS 头部,允许来自其他域的请求。例如,在 Apache 或 Nginx 配置中添加 `Access-Control-Allow-Origin` 头,指定允许访问的源...

    解决javaweb端跨域问题的jar包和文档

    然而,在实际开发中,我们可能需要从不同的域名、端口或协议下请求资源,这时就需要解决跨域问题。本资源包含了解决这一问题的jar包和相关文档,经测试确认是可用的。 1. **同源策略与跨域**: 同源策略是浏览器...

    cesium跨域加载问题

    本篇文章将详细介绍如何解决Cesium在使用Tomcat服务器时的跨域问题。 首先,我们需要理解Cesium的跨域加载机制。Cesium主要通过XMLHttpRequest或Fetch API来请求外部资源,而这些API遵循浏览器的同源策略。为了解决...

    tomcat跨域访问问题

    为了解决Tomcat的跨域问题,我们需要理解CORS的工作原理,并通过配置Tomcat来允许特定的跨域请求。 首先,让我们理解一下CORS的基本概念。CORS是一种W3C标准,它允许浏览器通过在HTTP头中添加`Access-Control-Allow...

    WEB前端关于跨域问题的8种解决方案

    8. **Nginx或Apache配置**:通过修改服务器配置,例如Nginx的反向代理或Apache的mod_proxy模块,可以将跨域请求重定向到同一源的服务器,实现跨域访问。 在选择解决方案时,需要考虑实际需求、兼容性和安全性等因素...

    java服务器端解决跨域问题共6页.pdf.zip

    Java服务器端解决跨域问题是一项常见的任务,尤其是在开发Web应用时。跨域是由于浏览器的安全策略,即同源策略(Same-Origin Policy)所引发的。同源策略限制了JavaScript只能与相同协议、相同主机和相同端口的资源...

    完美解决axios跨域请求出错的问题

    可以使用代理服务器,例如nginx或apache,以便解决跨域请求问题。例如,在nginx中,可以添加以下配置: ```bash location /api { proxy_pass http://localhost:8080; proxy_set_header Host $host; proxy_set_...

    cesium在Tomcat部署后,跨域访问问题解决.zip

    当Cesium在Apache Tomcat服务器上部署时,由于浏览器的同源策略限制,可能会遇到跨域访问的问题。这个问题通常出现在前端尝试从一个域名下请求另一个域名下的资源时。以下是对这个问题的详细分析和解决方案: 首先...

    arcgis api for js 4.x 在tomcat离线部署后,跨域访问问题

    在IT行业中,ArcGIS API for JavaScript 4.x是一款强大的地理信息系统开发工具,它允许开发者创建交互式的地图应用。...通过以上步骤,你可以成功地在Tomcat上部署并解决跨域访问问题,实现顺畅的数据交互。

    js_跨域访问[参照].pdf

    总的来说,解决JavaScript跨域问题通常需要结合客户端和服务器端的技术,根据实际情况选择合适的策略。对于开发过程中遇到跨域问题的场景,理解这些解决方案并灵活运用是非常重要的,以确保不同源之间能够安全、有效...

    arcgis跨域.rar

    标题"arcgis跨域.rar"和描述"arcgis10.2跨域解决方案"都指向了这个问题的关键点:如何解决ArcGIS 10.2版本中的跨域访问限制。 首先,我们需要理解什么是跨域。在Web开发中,由于浏览器的安全策略,JavaScript通常被...

    ajax跨域解决办法

    这通常通过修改服务器配置或编写中间件实现,例如Apache或Nginx的反向代理功能。 5. **Flash跨域**:虽然Flash已逐渐被淘汰,但在过去,它可以通过`crossdomain.xml`文件来允许跨域请求。不过,这种方法需要Flash...

    避免跨域问题 ajax proxy

    Ajax Proxy是一种解决跨域问题的技术,它通过在服务端创建一个代理服务器,将客户端的Ajax请求转发到目标服务器,然后再将响应返回给客户端。这样,由于请求是服务器之间进行的,不受浏览器同源策略的限制,从而实现...

    Tomcat跨域请求资源解决方案.zip

    本资料包“Tomcat跨域请求资源解决方案.zip”显然是针对这个问题提供了一个具体的解决方案,主要聚焦于如何在Apache Tomcat服务器上配置以允许跨域请求。 Tomcat是Java Servlet容器,广泛用于部署Java Web应用程序...

Global site tag (gtag.js) - Google Analytics