Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

PC浏览器访问不显示数据 #17

Closed
kaoruray opened this issue Feb 13, 2021 · 10 comments
Closed

PC浏览器访问不显示数据 #17

kaoruray opened this issue Feb 13, 2021 · 10 comments

Comments

@kaoruray
Copy link

不论是自己搭建的还是演示站,在PC上换了3个浏览器,页面能正常显示,但显示数据的部分一直转圈,用手机访问正常,这是哪的问题?

@censujiang
Copy link

我也遇到相同问题,但是手机访问也不正常

@renfei
Copy link

renfei commented Feb 14, 2021

我已经提交合并请求 #18 来临时解决这个问题,需要的朋友可以将 src/utils/uptimerobot.js

const Api = 'https://api.uptimerobot.com/v2/getMonitors';

改为

const Api = 'https://uptimerobot-api.renfei.net/v2/getMonitors';

可以临时解决这个问题,想要根本解决的话,还需自己搭建反代服务。

@iiivii
Copy link

iiivii commented Feb 15, 2021

我已经提交合并请求 #18 来临时解决这个问题,需要的朋友可以将 src/utils/uptimerobot.js

const Api = 'https://api.uptimerobot.com/v2/getMonitors';

改为

const Api = 'https://uptimerobot-api.renfei.net/v2/getMonitors';

可以临时解决这个问题,想要根本解决的话,还需自己搭建反代服务。

请问可以po一份CF的workers的反代源码吗?

@renfei
Copy link

renfei commented Feb 16, 2021

我已经提交合并请求 #18 来临时解决这个问题,需要的朋友可以将 src/utils/uptimerobot.js

const Api = 'https://api.uptimerobot.com/v2/getMonitors';

改为

const Api = 'https://uptimerobot-api.renfei.net/v2/getMonitors';

可以临时解决这个问题,想要根本解决的话,还需自己搭建反代服务。

请问可以po一份CF的workers的反代源码吗?

好的,由于是我临时解决这个问题,没有想太多,以下代码没有调优,只是我手写实现了功能,可以作为参考:

async function handleRequest(request) {
  let apiUrl = request.url.replace("uptimerobot-api.renfei.net","api.uptimerobot.com")
  request = new Request(apiUrl, request)
  let response = await fetch(request)
  response = new Response(response.body, response)
  response.headers.set("Access-Control-Allow-Origin", "*")
  response.headers.set("Access-Control-Allow-Methods", "*")
  response.headers.set("Access-Control-Allow-Credentials", "true")
  response.headers.set("Access-Control-Allow-Headers", "Content-Type,Access-Token")
  response.headers.set("Access-Control-Expose-Headers", "*")
  return response
}

addEventListener("fetch", event => {
  const request = event.request
  event.respondWith(handleRequest(request))
})

@iiivii
Copy link

iiivii commented Feb 16, 2021

我已经提交合并请求 #18 来临时解决这个问题,需要的朋友可以将 src/utils/uptimerobot.js

const Api = 'https://api.uptimerobot.com/v2/getMonitors';

改为

const Api = 'https://uptimerobot-api.renfei.net/v2/getMonitors';

可以临时解决这个问题,想要根本解决的话,还需自己搭建反代服务。

请问可以po一份CF的workers的反代源码吗?

好的,由于是我临时解决这个问题,没有想太多,以下代码没有调优,只是我手写实现了功能,可以作为参考:

async function handleRequest(request) {
  let apiUrl = request.url.replace("uptimerobot-api.renfei.net","api.uptimerobot.com")
  request = new Request(apiUrl, request)
  let response = await fetch(request)
  response = new Response(response.body, response)
  response.headers.set("Access-Control-Allow-Origin", "*")
  response.headers.set("Access-Control-Allow-Methods", "*")
  response.headers.set("Access-Control-Allow-Credentials", "true")
  response.headers.set("Access-Control-Allow-Headers", "Content-Type,Access-Token")
  response.headers.set("Access-Control-Expose-Headers", "*")
  return response
}

addEventListener("fetch", event => {
  const request = event.request
  event.respondWith(handleRequest(request))
})

万分感谢!!!

@yb
Copy link
Owner

yb commented Feb 18, 2021

官网间歇性的 CORS 抽风,和 PC 浏览器无关,不是技术问题;
另外作为一个基于官网 API 的产品,我不会在代码中 hardcode 第三方接口,这对用户是不负责任的;
针对这个抽风问题,后续会增加自定义 API 域名配置,使不使用第三方接口应该交给用户选择;

@renfei
Copy link

renfei commented Feb 18, 2021

官网间歇性的 CORS 抽风,和 PC 浏览器无关,不是技术问题;
另外作为一个基于官网 API 的产品,我不会在代码中 hardcode 第三方接口,这对用户是不负责任的;
针对这个抽风问题,后续会增加自定义 API 域名配置,使不使用第三方接口应该交给用户选择;

嗯,理解并支持您的严谨态度。

我当时也想了下会不会产生安全问题,但我看过官方文档以后,只读的keyread-only api_key,并不能有任何操作权限,而且本来就是在页面中公开的,也可以通过网络请求里看到明文的key,而且数据都是一些监控数据,我认为没那么敏感,毕竟使用这个状态页的场景,就是公开让别人看的吧。

所以我就发出来了,作为目前没有很好的解决方案时的临时解决办法,让页面可以先展示出来,再慢慢研究解决办法。

image

@yb
Copy link
Owner

yb commented Feb 18, 2021

我当时也想了下会不会产生安全问题,但我看过官方文档以后,只读的keyread-only api_key,并不能有任何操作权限,而且本来就是在页面中公开的,也可以通过网络请求里看到明文的key,而且数据都是一些监控数据,我认为没那么敏感,毕竟使用这个状态页的场景,就是公开让别人看的吧。

所以我就发出来了,作为目前没有很好的解决方案时的临时解决办法,让页面可以先展示出来,再慢慢研究解决办法。

不仅仅是数据隐私的问题,谁能保证第三方服务会一直 online 呢?
cf workers 免费版也是有请求次数限制的对不

@yb yb closed this as completed Feb 18, 2021
@yb
Copy link
Owner

yb commented Feb 18, 2021

最新的 v.1.5.1 版本新增了 ApiDomain 配置,可自定义接口域名;
另外 README 中也增加了如何 Cloudflare Workers 搭建代码,欢迎更新;

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants
@renfei @yb @censujiang @iiivii @kaoruray and others