上次利用 cloudflare 解决了文件下载的问题,折腾之余,发现 cloudflare 的 worker 还挺好用的,利用 cloudflare 还可以解决 ajax 中的跨域问题。
基本原理就是利用 cloudflare worker 代理,利用它去发送 ajax 请求,然后把结果返回。由于 worker 可以自定义返回头,所以可以添加'access-control-allow-origin','access-control-expose-headers',这样就解决了与 cloudflare 之间的跨域问题。
demo: https://proxy.onesrc.workers.dev/ajax/
向该网址发送的 body 和 header 都会通过 worker 代理发送至你指定的网站,并将处理结果返回给你。
以浏览器控制台为例,可以这样使用
fetch('https://proxy.onesrc.workers.dev/ajax/'+'http://www.baidu.com').then(response => response.text()).then(res=>console.log(res));
代码可以在这里获取https://github.com/ukuq/onepoint/blob/master/test/cloudflare/proxy.js
https://github.com/ukuq/cloudflare/blob/master/proxy.js
本文由 ukuq 创作,采用 知识共享署名4.0 国际许可协议进行许可
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名
最后编辑时间为: Jan 15, 2020 at 10:35 pm
您好,能提供https://proxy.onesrc.workers.dev/ajax/当前的脚本代码给我吗?我需要这个,用您Github版的还是无法解决跨域,但使用您这个链接就可以。感谢!
可以先用旧版的 https://github.com/ukuq/cloudflare/commit/c20331c2da7fcf261c87e5e344e06df52b04fde8
新版本的忘记加跨域的了
地址留错了,应该在 dev 分支里面 :(