跨域问题的解决(CORS、Proxy、CSP问题)

本文主要是记录一下遇到的跨域问题,不再讲述常用的几种方法的原理,主要是记录解决实际开发中遇到的一些问题:

起初我在本地开发的时候,使用的CORS解决了跨域问题,因为本地调试过程虽然域名都是“localhost”,但是启用的端口号不一样,导致前端的数据请求出现了跨域问题,为了解决这个问题,我在服务端设置了响应头,保证了跨域问题的解决:

app.use((req, res, next) => {
  res.setHeader('Access-Control-Allow-Origin', 'http://localhost:8080');
  res.setHeader('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE');
  res.setHeader('Access-Control-Allow-Headers', 'Content-Type');
  next();
});

在我的项目正式上线后,我修改了允许通过的域名和端口号,解决了大部分资源的跨域问题,但是由于我的博文是由MD文档解析成HTML的,其中博文的图片是单独用img标签的src使用url进行图片的获取的。结果这个图片却因为CSP策略而无法加载,经过检查,我发现需要将响应标头中的:

Content-Security-Policy:default-src 'none' 

 设置为:

Content-Security-Policy: default-src 'self' 

 于是我新增了中间件用于改变请求CSP的模式:

app.use(function (req, res, next) {
  res.setHeader(
    'Content-Security-Policy', "default-src 'self'
  );

  next();
});

不过于事无补,后来我使用代理转发的策略,企图绕过CSP,于是设置了一个代理服务器的接口:

app.get('/proxy',(req,res)=>{
  const imageUrl = req.query.url
  request.get(imageUrl).pipe(res)
})

通过这种方式,确实管用,将获取到的url转发,返回一个真正的图片链接,实现了博文中的图片的加载,效果最终如下:

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值