利用 cloudflare 解决 ajax 跨域问题

in 姑妄言之 with 3 comments

上次利用 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

上一篇: 利用 cloudflare 写了个下载辅助工具
下一篇: OnePoint config.json 配置详解
Responses
  1. 楊遠徵

    您好,能提供https://proxy.onesrc.workers.dev/ajax/当前的脚本代码给我吗?我需要这个,用您Github版的还是无法解决跨域,但使用您这个链接就可以。感谢!

    Reply
    1. _ukuq
      @楊遠徵

      可以先用旧版的 https://github.com/ukuq/cloudflare/commit/c20331c2da7fcf261c87e5e344e06df52b04fde8
      新版本的忘记加跨域的了

      Reply
  2. zsakvo

    地址留错了,应该在 dev 分支里面 :(

    Reply