`

APACHE代理https转发到http解决https跨域问题

阅读更多

昨天开发一个chrome插件浏览器插件:插件自动把当前浏览的页面html代码抓去,通过ajax的方式html代码发送到服务器解析。抓去的站点是https的,我们的解析就普通的tomcat用得的http,做的过程中遇到以下问题:

was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint 'http://127.0.0.1/'. This request has been blocked; the content must be served over HTTPS.

 

原因是源站点是https的,我本地tomcat是http的,存在跨域问题,所以就需要用到apache代理把本地http包一个https的外壳。

 

一、配置Apache支持SSL

步骤1:配置 APACHE以支持SSL

找到下面两行去掉前面的注释 #

LoadModule ssl_module modules/mod_ssl.so

Include conf/extra/httpd-ssl.conf

步骤2: 为网站服务器生成证书及私钥文件

C:/Program Files/Apache Software Foundation/Apache2.2/bin>openssl genrsa -out server.key 1024

生成一个server.key

步骤3:生成签署申请

C:/Program Files/Apache Software Foundation/Apache2.2/bin>openssl req -new -out server.csr -key server.key -config ../conf/openssl.cnf

此时生成签署文件 SERVER.CSR

步骤4:使用OPENSSL生成CA私钥

C:/Program Files/Apache Software Foundation/Apache2.2/bin>openssl genrsa -out ca.key 1024

多出CA.key文件

步骤5:利用CA的私钥产生CA的自签署证书

C:/Program Files/Apache Software Foundation/Apache2.2/bin>openssl req -new -x509 -days 365 -key ca.key -out ca.crt -config ../conf/openssl.cnf

步骤6:在bin目录下新建demoCA目录,在demoCA下新建index.txt,newcerts,serial 目录结构如下

demoCA

|--index.txt(文本,内容为空)

|--newcerts(文件夹)

|--serial(文本,内容为 01)

步骤7:准备为网站服务器签署证书

C:/Program Files/Apache Software Foundation/Apache2.2/bin>openssl ca -in server.csr -out server.crt -cert ca.crt -keyfile ca.key -config ../conf/openssl.cnf

生成 server.crt文件

步骤8:将 server.crt server.key复制到 conf文件夹下

------------------配置ssl常见问题---------------------

win7系统64位在配置过程中,在重启apache时可能会出现问题

问题1:apache重启失败,报错信息Syntax error on line 62 of C:/Program Files (x86)/Apache Software Foundation/Apache2.2/conf/extra/httpd-ssl.conf:

SSLSessionCache: Invalid argument: size has to be >= 8192 bytes

解决办法:

将conf/extra/httpd-ssl.conf中61-63行修改成下面这样即可SSLSessionCache "dbm:C:/Program Files (x86)/Apache Software Foundation/Apache2.2/logs/ssl_scache"

# SSLSessionCache "shmcb:C:/Program Files (x86)/Apache Software Foundation/Apache2.2/logs/ssl_scache(512000)"

SSLSessionCacheTimeout 300

 

二、设置代理

修改http.cnf文件

步骤1:打开代理moduls

LoadModule proxy_module modules/mod_proxy.so

LoadModule proxy_ajp_module modules/mod_proxy_ajp.so

LoadModule proxy_connect_module modules/mod_proxy_connect.so

LoadModule proxy_ftp_module modules/mod_proxy_ftp.so

LoadModule proxy_http_module modules/mod_proxy_http.so

步骤2:添加一下代码

# 正向代理开关  

ProxyRequests On  

ProxyVia On  

  

<Proxy *>  

Order deny,allow  

Allow from all  

</Proxy>  

 

# 设置反向代理  

ProxyPass / http://127.0.0.1:8080/

# 设置反向代理使用代理服务的HOST重写内部原始服务器响应报文头中的Location和Content-Location  

ProxyPassReverse / http://127.0.0.1:8080/

 

分享到:
评论

相关推荐

    xmlhttp跨域解决方案

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

    signalR跨域及解决方案

    如果你不能在服务器端配置 CORS 或者需要支持更复杂的跨域场景,可以设置一个代理服务器,将客户端的请求转发到 SignalR 服务器。例如,使用 Nginx 或 Apache 作为反向代理服务器。 4. **IFrame 和 PostMessage:*...

    Ajax跨域问题及其解决方案.docx

    这种方式需要在Nginx或Apache中进行适当的配置,例如设置代理转发规则等。 - **实现思路**:客户端发出请求到本地服务器,本地服务器再将请求转发至目标服务器,并将响应结果返回给客户端。 - **优点**:不需对...

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

    2. 使用代理:在你的应用服务器上设置一个代理,将 PDF 请求转发到实际的 PDF 存储服务器。这样,浏览器会认为 PDF 是从你的应用服务器加载的,避免了跨域问题。 3. PDF.js 配置:在使用 PDF.js 的时候,可以通过...

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

    总之,解决Java Web端的跨域问题通常涉及到理解同源策略、CORS机制,以及如何在特定的开发框架中配置和实现跨域支持。提供的jar包和文档是解决这个问题的有效工具,通过它们可以简化这个过程并确保跨域请求的成功。

    nginx实现跨域访问遇到的问题

    Nginx 跨域访问解决方案 Nginx 是一款轻量级的 ...Nginx 实现跨域访问时需要注意服务器代理方式、Eshell 工具、跨域使用 Http 容器等问题,通过合理的配置和解决方案,可以满足高并发的需求,提高系统的性能和可靠性。

    跨域共享session (实现http跳转https 共享session)

    在Nginx、Apache等服务器配置中添加强制重定向规则,将所有HTTP请求转发到对应的HTTPS端口。 2. **Cookie的Secure属性**:当设置Cookie时,添加`Secure`标志,确保Cookie仅在HTTPS连接下发送。这确保了即使在HTTP和...

    ajax跨域解决办法

    4. **服务器代理**:在服务器端设置一个代理,将客户端的AJAX请求转发到目标服务器,然后将结果返回给客户端。这通常通过修改服务器配置或编写中间件实现,例如Apache或Nginx的反向代理功能。 5. **Flash跨域**:...

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

    6. **代理服务器**:在前端与目标服务器之间设置一个代理服务器,所有跨域请求都通过代理转发,这样请求的实际源就会与代理服务器同源,从而规避同源策略。 7. **WebSocket**:WebSocket是一种持久化的双向通信协议...

    避免跨域问题 ajax proxy

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

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

    在Node.js或其它服务器端技术中,可以设置一个代理服务器,接收客户端的请求,然后转发到实际的目标服务器。这样,浏览器看到的是与自身同源的请求,从而绕过同源策略。 4. **IFrame和Window.postMessage** ...

    跨域引用资源技术

    1. **配置反向代理**:反向代理服务器(如Nginx或Apache)可以接收来自不同源的请求,并将它们转发到同一源的资源。这样,不同域名的客户端可以通过代理服务器访问同一份资源,从而实现跨域。这种方法适用于完全控制...

    web跨域完美解决方式

    如果后端无法控制响应头,可以使用前端代理服务器(如Webpack Dev Server),将跨域请求转发到实际的目标服务器。 三、Tomcat配置CORS 在Tomcat服务器上,我们可以配置`CORSFilter`来解决跨域问题。首先,在`$...

    tomcat解决跨域需要的jar.zip

    3. **代理服务器**:在某些情况下,如果不能修改后端服务器(如Tomcat),可以在前端设置一个代理服务器,将跨域请求转发到目标服务器,从而避免同源策略的限制。 4. **WebSocket跨域**:对于使用WebSocket进行实时...

    跨域的原因以及解决方案.docx

    - **通过代理服务器**:例如 Nginx 或 Apache 可以作为代理服务器,配置允许跨域的响应头信息。 **调用方解决方案**: - **增加转发层**:在客户端和服务端之间增加一个转发层,该层负责将客户端的请求转发到服务端...

    js_跨域访问[参照].pdf

    例如,使用Apache的`mod_rewrite`和`mod_proxy`模块,将对外部资源的请求转发到自己的服务器,然后由服务器向目标域发起请求并返回数据给客户端。 2. **客户端跨域策略**: - **JSONP(JSON with Padding)**:这...

    AJAX跨域实现的三种方式

    - 使用Nginx或Apache等反向代理服务器,将客户端的请求转发到实际的服务端,从而绕过同源策略。这种方式下,客户端请求的是代理服务器,而代理服务器再与实际服务端交互,使得浏览器认为请求是在同一源下进行的。 ...

    完美解决浏览器跨域的几种方法(汇总)

    跨域问题的解决方法多种多样,选择哪种方法取决于具体需求,如是否需要双向通信、数据安全性、兼容性等。JSONP适合简单数据获取,window.name适合单向传递大量数据,document.domain用于子域间通信,window.post...

    接口开发、springboot、接口转发、前端直接调用图床API时我们发现会报错,编写一个后端接口进行代理即可解决,已实现的例子

    为了解决这个问题,一种常见的做法是通过后端接口进行代理转发,即构建一个中间层来帮助前端完成对第三方API的调用。 本文将详细介绍如何使用Spring Boot实现一个文件转发接口,从而帮助前端安全地访问第三方图床...

Global site tag (gtag.js) - Google Analytics