【发布时间】:2022-07-30 23:38:23
【问题描述】:
我有一个 Intranet 网络服务器。它没有任何类型的证书,可以通过 http 访问。从技术上讲,它是一个公共 IP,但没有公共路由。
在这个网络服务器上,我有一个单页应用程序,它需要在不同的服务器(我也控制)上调用 https api nodejs/express 端点。我只需要添加 cors 库并“使用”它:
app.use(cors())
这工作了一个月左右。
现在,当我这样做时,我收到以下错误:
请求客户端不是安全上下文,资源在 更私密的地址空间
private。
搜索,把我带到这里:Chrome CORS error on request to localhost dev server from remote site,它实际上是说“让你的服务器 https”。
其他答案表明添加标题:Access-Control-Allow-Private-Network: true 就足够了。这由此处的文档支持:https://wicg.github.io/private-network-access/#:~:text=The%20Access%2DControl%2DRequest%2D,safely%20shared%20with%20external%20networks 表示:
Access-Control-Allow-Private-Network 表示资源可以 与外部网络安全共享。
我已经通过添加在 api 服务器上尝试了这个
app.use((req, res, next) => {
res.setHeader("Access-Control-Allow-Private-Network", "true")
next();
})
就在我之前添加的app.use(cors()) 行之后。
这给我留下了:
const app = express()
app.use(express.urlencoded({ extended: true }))
app.use(cors())
app.use((req, res, next) => {
res.setHeader("Access-Control-Allow-Private-Network", "true")
next();
})
app.use(express.json())
app.use('/api', jobRouter);
这并不能消除错误。
需要做什么才能让我的内网非http服务器访问https服务器?我控制双方。
【问题讨论】:
标签: node.js express cors http-headers private-network-access