解决跨域问题 has been blocked by CORS policy: No ‘Access-Control-Allow-Origin‘ header is present[通俗易懂]

解决跨域问题 has been blocked by CORS policy: No ‘Access-Control-Allow-Origin‘ header is present[通俗易懂]说一下做项目时需要用到html2canvas做项目截图踩到的跨域坑。项目需要拉取用户的头像,而linkedin和微信的头像存放于cdn中,这边涉及到的跨域问题。坑1:由于跨域,画布被污染,不能调用toBlob(),toDataURL()或getImageData()方法,调用它们会抛出安全错误。按网上说的做,配置useCORS:true,…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

说一下做项目时需要用到html2canvas做项目截图踩到的跨域坑。

项目需要拉取用户的头像,而linkedin和微信的头像存放于cdn中,这边涉及到的跨域问题。

坑1:

由于跨域, 画布被污染,不能调用 toBlob(), toDataURL() 或 getImageData() 方法,调用它们会抛出安全错误。

按网上说的做,

        配置 useCORS: true,

        Nginx添加请求头

                add_header Access-Control-Allow-Origin *;
                add_header Access-Control-Allow-Credentials: true;

成功解决了画布被污染的问题。然而这种解决方法只可以解决你自己服务器的问题,你总不能去微信或其他第三方服务器添加请求头吧。。。更大的坑来了

坑2:

被对方服务器拒绝图片请求。

Access to Image ‘https://media.licdn.com/dms/image/C5603AQHCky1Ku581hg/profile-displayphoto-shrink_100_100/0?e=1573689600&v=beta&t=8TqbDk8iWCXXXXXXXXXXXXXXXXXXXXX’ has been blocked from origin ‘127.0.0.1:8000’

尝试了各种方法,包括

        在img标签上添加crossorigin = “anonymous”;

        前端页面设置<meta http-equiv=”Cache-Control” content=”no-cache, no-store, must-revalidate” />;

        Nginx设置 add_header Cache-Control no-store;

都没有成功。

最后还是由Nginx解决,分两部步

第一步:

       首先将服务器保存的第三方cdn链接

              ‘https://media.licdn.com/dms/image/C5603AQHCky1Ku581hg/profile-displayphoto-shrink_100_100/0?e=1573689600&v=beta&t=8TqbDk8iWCXXXXXXXXXXXXXXXXXXXXX

       保存为 :

              “本地域名/third_image/dms/image/C5603AQHCky1Ku581hg/profile-displayphoto-shrink_100_100/0?e=1573689600&v=beta&t=8TqbDk8iWCXXXXXXXXXXXXXXXXXXXXX

       访问第三方的域名涉及到跨域,但是访问本地的其他资源文件夹是OK的。

第二部:

       然后在Nginx设置一下代理

       location ^~ /third_image/ {

              add_header ‘Access-Control-Allow-Origin’ “$http_origin” always;
              add_header ‘Access-Control-Allow-Credentials’ ‘true’ always;
              add_header ‘Access-Control-Allow-Methods’ ‘GET, OPTIONS’ always;
              add_header ‘Access-Control-Allow-Headers’ ‘Accept,Authorization,Cache-Control,Content-Type,DNT,If-Modified-  Since,Keep-Alive,Origin,User-Agent,X-Requested-With’ always;
              proxy_pass https://media.licdn.com/;
       }

也就是:

把            https://media.licdn.com/dms/image/C5603AQHCky1Ku581hg/profile-displayphoto-shrink_100_100/0?e=1573689600&v=beta&t=8TqbDk8iWCXXXXXXXXXXXXXXXXXXXXX
保存为     https://本地域名/third_image/dms/image/C5603AQHCky1Ku581hg/profile-displayphoto-shrink_100_100/0?e=1573689600&v=beta&t=8TqbDk8iWCXXXXXXXXXXXXXXXXXXXXX

最后由Nginx代理为  https://media.licdn.com/dms/image/C5603AQHCky1Ku581hg/profile-displayphoto-shrink_100_100/0?e=1573689600&v=beta&t=8TqbDk8iWCXXXXXXXXXXXXXXXXXXXXX
 

完美解决!眼泪都要掉下来了,太感人了

更新啦更新啦~~~~ 推荐大家阅读我的最新原理解析篇呀:解决跨域问题 has been blocked by CORS policy 后续,原理解析篇

       

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/172636.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 常见的测试用例设计方法有哪些呢?「建议收藏」

    常见的测试用例设计方法有哪些呢?「建议收藏」知乎问题:常见的测试用例设计方法有哪些呢?有什么比较好的基础理论书籍推荐吗? [我的回答]2018年8月25日测试用例设计技术和方法,其目的是为了解决测试分析与设计过程中碰到的问题,纯粹的理论只是应用技术和方法的基础,但不是目的。测试用例分析与设计过程,需要我们不断的应用结构化思维、发散性思维和可视化思维,以构建系统化的测试分析与设计框架。 我将2011年写的《软件测试设计…

    2022年6月23日
    22
  • C# WinForm开发系列之如何使用panel控件制作左侧导航菜单

    C# WinForm开发系列之如何使用panel控件制作左侧导航菜单之前需要写一个C#的左侧导航菜单控件,想了许久,最终选择了使用paenl控件来实现这一功能。决定和大家分享一下,初步接触C#,欢迎多多指教,不胜感激!首先,我的思路分为以下几步:一.使用vs编辑工具创建一个导航菜单控件;如图1所示:图1二.在菜单控件上布局你的导航菜单控件的样式;其结构如图2所示,(我是通过5个panel控件和两个label控件组成):

    2022年7月15日
    118
  • 回归问题-Lasso回归[通俗易懂]

    回归问题-Lasso回归[通俗易懂]Lasso(Leastabsoluteshrinkageandselectionoperator)方法是以缩小变量集(降阶)为思想的压缩估计方法。它通过构造一个惩罚函数,可以将变量的系数进行压缩并使某些回归系数变为0,进而达到变量选择的目的。正则化正则化(Regularizaiton)是一种防止过拟合的方法。…

    2022年4月27日
    47
  • css left right_leftorright什么意思

    css left right_leftorright什么意思零、说点什么好久没更新了。并不是在折腾什么大作,而是广度学习与实践中,加上婚礼等诸多大事,所以产出较少。今天这篇也只是小作,博客是自己很好的学习工具,只要我学习不止,博客也会不断更新的。我们平时一般都使用clear:both清除浮动,貌似就干这一件事件。用得很开心,但似乎理解上懵懵懂懂,我其实也是,早年的时候,测试过CSS clear:left/right,虽知其作用(

    2022年9月11日
    1
  • 超声波雷达应用总结「建议收藏」

    超声波雷达应用总结「建议收藏」超声波雷达应用总结超声波雷达简介超声波雷达的数学模型超声波雷达的特性超声波雷达配置情况无人驾驶中超声波主要的应用超声波雷达简介常见的超声波雷达有两种。第一种是安装在汽车前后保险杠上的,也就是用于测量汽车前后障碍物的倒车雷达,这种雷达业内称为UPA;第二种是安装在汽车侧面的,用于测量侧方障碍物距离的超声波雷达,业内称为APA。UPA超声波雷达UPA超声波雷达的探测距离一般在15~250cm之间,主要用于测量汽车前后方的障碍物。如下图所示,为单个UPA的探测范围示意图。APA超声波雷达A

    2022年9月12日
    0
  • python进程

    python进程

    2021年9月13日
    51

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号