前端在调用别人 api 时经常遇到跨域或者 https 无法调用 http 的问题,通过反代即可解决。 deno.com 提供免费的 NodeJS 环境,在其官网后台新建应用,在 playground 粘贴代码:
import { serve } from "https://deno.land/std@0.155.0/http/server.ts"
serve(async (req: Request) => {
const url = new URL(req.url)
const targetUrl = url.href.replace(`${url.origin}/`, '')
let urlObj: any
try {
urlObj = new URL(targetUrl)
} catch (e) {
console.error(e.message)
}
if (['http:', 'https:'].indexOf(urlObj?.protocol) > -1) {
let res = await fetch(targetUrl, {
headers: req.headers,
method: req.method,
body: req.body,
})
let headers = {}
res.headers.forEach((value, key) => {
headers[key] = value
})
if ('*' !== headers['Access-Control-Allow-Origin']?.trim()
&& '*' !== headers['access-control-allow-origin']?.trim()) {
headers['Access-Control-Allow-Origin'] = '*'
}
return new Response(res.body, { headers, status: res.status })
}
return new Response(
`Usage: ${url.origin}/https://deno.com/deploy/docs/pricing-and-limits`)
})
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.