昨天开发一个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/
相关推荐
为了解决这一问题,我们可以采用多种跨域解决方案,其中一种是通过设置代理服务器。 **一、什么是同源策略** 同源策略是浏览器为了保护用户安全而实施的一种安全策略,它规定浏览器只允许加载来自相同协议、域名和...
如果你不能在服务器端配置 CORS 或者需要支持更复杂的跨域场景,可以设置一个代理服务器,将客户端的请求转发到 SignalR 服务器。例如,使用 Nginx 或 Apache 作为反向代理服务器。 4. **IFrame 和 PostMessage:*...
这种方式需要在Nginx或Apache中进行适当的配置,例如设置代理转发规则等。 - **实现思路**:客户端发出请求到本地服务器,本地服务器再将请求转发至目标服务器,并将响应结果返回给客户端。 - **优点**:不需对...
2. 使用代理:在你的应用服务器上设置一个代理,将 PDF 请求转发到实际的 PDF 存储服务器。这样,浏览器会认为 PDF 是从你的应用服务器加载的,避免了跨域问题。 3. PDF.js 配置:在使用 PDF.js 的时候,可以通过...
总之,解决Java Web端的跨域问题通常涉及到理解同源策略、CORS机制,以及如何在特定的开发框架中配置和实现跨域支持。提供的jar包和文档是解决这个问题的有效工具,通过它们可以简化这个过程并确保跨域请求的成功。
Nginx 跨域访问解决方案 Nginx 是一款轻量级的 ...Nginx 实现跨域访问时需要注意服务器代理方式、Eshell 工具、跨域使用 Http 容器等问题,通过合理的配置和解决方案,可以满足高并发的需求,提高系统的性能和可靠性。
在Nginx、Apache等服务器配置中添加强制重定向规则,将所有HTTP请求转发到对应的HTTPS端口。 2. **Cookie的Secure属性**:当设置Cookie时,添加`Secure`标志,确保Cookie仅在HTTPS连接下发送。这确保了即使在HTTP和...
4. **服务器代理**:在服务器端设置一个代理,将客户端的AJAX请求转发到目标服务器,然后将结果返回给客户端。这通常通过修改服务器配置或编写中间件实现,例如Apache或Nginx的反向代理功能。 5. **Flash跨域**:...
6. **代理服务器**:在前端与目标服务器之间设置一个代理服务器,所有跨域请求都通过代理转发,这样请求的实际源就会与代理服务器同源,从而规避同源策略。 7. **WebSocket**:WebSocket是一种持久化的双向通信协议...
Ajax Proxy是一种解决跨域问题的技术,它通过在服务端创建一个代理服务器,将客户端的Ajax请求转发到目标服务器,然后再将响应返回给客户端。这样,由于请求是服务器之间进行的,不受浏览器同源策略的限制,从而实现...
在Node.js或其它服务器端技术中,可以设置一个代理服务器,接收客户端的请求,然后转发到实际的目标服务器。这样,浏览器看到的是与自身同源的请求,从而绕过同源策略。 4. **IFrame和Window.postMessage** ...
1. **配置反向代理**:反向代理服务器(如Nginx或Apache)可以接收来自不同源的请求,并将它们转发到同一源的资源。这样,不同域名的客户端可以通过代理服务器访问同一份资源,从而实现跨域。这种方法适用于完全控制...
如果后端无法控制响应头,可以使用前端代理服务器(如Webpack Dev Server),将跨域请求转发到实际的目标服务器。 三、Tomcat配置CORS 在Tomcat服务器上,我们可以配置`CORSFilter`来解决跨域问题。首先,在`$...
3. **代理服务器**:在某些情况下,如果不能修改后端服务器(如Tomcat),可以在前端设置一个代理服务器,将跨域请求转发到目标服务器,从而避免同源策略的限制。 4. **WebSocket跨域**:对于使用WebSocket进行实时...
- **通过代理服务器**:例如 Nginx 或 Apache 可以作为代理服务器,配置允许跨域的响应头信息。 **调用方解决方案**: - **增加转发层**:在客户端和服务端之间增加一个转发层,该层负责将客户端的请求转发到服务端...
例如,使用Apache的`mod_rewrite`和`mod_proxy`模块,将对外部资源的请求转发到自己的服务器,然后由服务器向目标域发起请求并返回数据给客户端。 2. **客户端跨域策略**: - **JSONP(JSON with Padding)**:这...
- 使用Nginx或Apache等反向代理服务器,将客户端的请求转发到实际的服务端,从而绕过同源策略。这种方式下,客户端请求的是代理服务器,而代理服务器再与实际服务端交互,使得浏览器认为请求是在同一源下进行的。 ...
跨域问题的解决方法多种多样,选择哪种方法取决于具体需求,如是否需要双向通信、数据安全性、兼容性等。JSONP适合简单数据获取,window.name适合单向传递大量数据,document.domain用于子域间通信,window.post...
为了解决这个问题,一种常见的做法是通过后端接口进行代理转发,即构建一个中间层来帮助前端完成对第三方API的调用。 本文将详细介绍如何使用Spring Boot实现一个文件转发接口,从而帮助前端安全地访问第三方图床...