公网域名访问内网IP跨域

项目场景:

在公司内网环境下,使用公网域名下的系统用js访问内网的接口,会出现跨域问题。

原文:https://developer.chrome.com/blog/private-network-access-update/#what-is-private-network-access


问题描述

The request client is not a secure context and the resource is in more-private address space privat


原因分析:

公网资源(访问者) 访问 私网资源(被访问者),由于浏览器升级之后有了专用网络访问的条例

专用网络访问(以前称为 CORS-RFC1918)限制网站向专用网络上的服务器发送请求的能力。它只允许来自安全上下文的此类请求。该规范还扩展了跨域资源共享 (CORS) 协议,因此网站现在必须在被允许发送任意请求之前明确地向专用网络上的服务器请求授权。

专用网络请求是目标服务器的 IP 地址比请求发起者获取的 IP 地址更私密的请求。例如,从公共网站 ( https://example.com) 到私人网站 ( http://router.local) 的请求,或从私人网站到 localhost 的请求。

在这里插入图片描述


解决方案:

1.将两端升级为 HTTPS

此解决方案需要控制用户的 DNS 解析,例如 Intranet 上下文中的情况,或者如果用户从您控制的 DHCP 服务器获取其名称服务器的地址。它还要求您拥有公共域名。

通过 HTTPS 为私有网站提供服务的主要问题是公钥基础设施证书颁发机构 (PKI CA) 仅向具有公共域名的网站提供 TLS 证书。要解决此问题。

2.网络传输

此解决方案不需要控制用户的 DNS 解析。它确实需要目标服务器运行一个最小的 WebTransport 服务器(HTTP/3 服务器经过一些修改)。

3.反向嵌入

此解决方案不需要对网络进行任何管理控制,并且可以在目标服务器功能不足以运行 HTTPS 时使用。

与从公共 Web 应用程序获取私有子资源不同,可以从私有服务器提供应用程序的骨架,然后从公共服务器(例如 CDN)获取其所有子资源(例如脚本或图像)。然后,生成的 Web 应用程序可以向私有服务器发出请求,因为这些请求被认为是同源的。它甚至可以向具有私有 IP(但不是 localhost)的其他服务器发出请求,尽管从长远来看这可能会改变。

通过在私有服务器上仅托管一个骨架,您可以通过将新资源推送到公共服务器来更新 Web 应用程序,就像更新公共 Web 应用程序一样。另一方面,生成的 Web 应用程序不是安全上下文,因此它无法访问 Web 的一些更强大的功能。

### 公网环境中 WordPress 的配置与使用 #### 容器化部署WordPress 为了简化部署过程并提高系统的稳定性,在公网环境下推荐采用Docker容器来运行WordPress及其依赖的服务。首先,需确保已正确设置了Docker下载源以加速镜像获取速度[^1]。 ```bash sudo apt-get update && sudo apt-get install docker-ce docker-ce-cli containerd.io ``` 接着按照官方指南拉取最新的WordPress和MySQL镜像版本: ```bash docker pull wordpress:latest docker pull mysql:5.7 ``` 创建必要的数据卷用于持久存储数据库文件以及上传的内容资源,并启动服务容器: ```bash docker volume create wp_data docker run --name some-d mysql:5.7 docker run --name some-wordpress --link some-mysql:mysql -p 8080:80 -d wordpress ``` 此时可以通过`http://localhost:8080`访问初始安装向导页面完成基本参数设定工作,如站点名称、管理员账号密码等信息填写。 #### 使用Cpolar实现内网穿透 对于不具备固定公网IP地址的情况,借助专业的内网穿透解决方案能够有效解决这一难题。这里选用的是Cpolar这款工具来进行操作说明[^4]。 先前往官方网站下载对应平台下的客户端程序包并解压至合适位置;随后参照文档指引注册账户获得授权Token以便后续命令行调用API接口时验证身份合法性。 执行如下指令开启隧道连接,指定目标端口为之前暴露出来的HTTP监听端口号(即8080),同时自定义一个易于记忆识别的子域名作为对外展示形式的一部分: ```bash ./cpolar tcp 8080 -subdomain=yourcustomnamehere ``` 一旦成功建立关联关系之后便可通过浏览器直接打开形似`tcp.yourcustomnamehere.cpolar.to`这样的链接正常浏览编辑后台管理界面了[^2]。 #### 修改Wordpress配置适应公网环境 当涉及到资源共享(CORS)或者绝对路径引用等问题时,则有必要调整部分默认行为使之更加贴合实际应用场景需求。具体做法是在wp-config.php文件末尾追加几项额外选项声明: ```php define('WP_HOME','https://yourpublicaddress.com'); define('WP_SITEURL','https://yourpublicaddress.com'); ``` 另外考虑到安全性因素建议启用HTTPS加密传输协议,并且定期备份重要资料防止意外丢失风险发生[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值