返回
携手 webpack 与 nginx 实现跨域,解锁跨域之门
前端
2024-02-16 13:00:33
跨域概述
跨域是指从一个域名的网页试图去请求另一个域名的资源,而浏览器出于安全考虑会限制这种请求,这种限制被称为跨域。
webpack 的跨域配置
- 在 webpack 的配置文件中,找到 devServer 选项,并在其中添加以下配置:
devServer: {
proxy: {
'/api': {
target: 'http://example.com',
changeOrigin: true
}
}
}
- 在上面的配置中,
/api
是需要代理的请求路径,http://example.com
是目标服务器的地址,changeOrigin: true
表示允许跨域请求。
nginx 的跨域配置
- 在 nginx 的配置文件中,找到 server 块,并在其中添加以下配置:
server {
listen 80;
location / {
proxy_pass http://localhost:3000;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
}
}
- 在上面的配置中,
listen 80
表示监听 80 端口,proxy_pass http://localhost:3000
表示将请求转发到前端服务器,proxy_set_header Host $host
表示将请求头中的 Host 字段设置为客户端请求中的 Host 字段,proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for
表示将请求头中的 X-Forwarded-For 字段设置为客户端请求中的 X-Forwarded-For 字段加上代理服务器的 IP 地址,proxy_set_header X-Real-IP $remote_addr
表示将请求头中的 X-Real-IP 字段设置为客户端请求中的 IP 地址。
测试
完成 webpack 和 nginx 的配置后,就可以使用浏览器进行测试了。在浏览器中打开需要跨域请求的页面,如果能够成功加载数据,则表示跨域配置成功。
总结
通过使用 webpack 和 nginx,可以轻松解决跨域问题,从而实现前后端分离的开发模式。webpack 可以通过代理服务器来将请求转发到目标服务器,而 nginx 可以通过反向代理来将请求转发到前端服务器。这样,就可以让前端和后端服务器跨域通信,从而实现业务逻辑的正常运行。