# 写了个简单的接力工具

- Link: https://www.ixiqin.com/2020/05/23/write-a-simple-relay-tools/
- Published: 2020-05-23T21:15:29+08:00
- Author: 白宦成

文章目录

 [Toggle](https://www.ixiqin.com/2020/05/23/write-a-simple-relay-tools/#)

 * [场景描述](https://www.ixiqin.com/2020/05/23/write-a-simple-relay-tools/#%e5%9c%ba%e6%99%af%e6%8f%8f%e8%bf%b0)
 * [解决方案 – Simple Proxy](https://www.ixiqin.com/2020/05/23/write-a-simple-relay-tools/#%e8%a7%a3%e5%86%b3%e6%96%b9%e6%a1%88_%e2%80%93_simple_proxy)
 * [使用建议](https://www.ixiqin.com/2020/05/23/write-a-simple-relay-tools/#%e4%bd%bf%e7%94%a8%e5%bb%ba%e8%ae%ae)
 * [如何自己部署](https://www.ixiqin.com/2020/05/23/write-a-simple-relay-tools/#%e5%a6%82%e4%bd%95%e8%87%aa%e5%b7%b1%e9%83%a8%e7%bd%b2)
 * [原理](https://www.ixiqin.com/2020/05/23/write-a-simple-relay-tools/#%e5%8e%9f%e7%90%86)
 * [Reference](https://www.ixiqin.com/2020/05/23/write-a-simple-relay-tools/#reference)

两会期间，各种工具的效果都会大幅度下降。在这种情况下，作为翻译组，想要好好干活也是
挺麻烦的，于是，便写了一些简单的工具，来解决这种特殊情况下的尴尬问题。

## 场景描述

在翻译组，我们有专门的机器来负责内容抓取 & 转化成为 markdown，但同时，文章中会有
一些图片，种种原因，会导致这些图片无法访问。在翻译的时候，我们需要对这些图片进行
下载，在这种情况下，就会很麻烦。我们需要一个更加简单的方式，来完成文件的下载。

## 解决方案 – Simple Proxy

Simple Proxy 就是来解决这个问题的，他可以让你很方便的完成外网的文件下载（当然，前提
是你的 Proxy Server 可以访问到这个文件。

使用方法：

 * 测试地址: [https://simpleproxydemo.herokuapp.com/](https://simpleproxydemo.herokuapp.com/)

 1. 找到你要下载的文件，比如 **_https://img.linux.net.cn/data/attachment/album/202005/
    23/201448jcxlcci1f1z4c2l2.jpg_**
 2. 在你的域名前加入测试域名作为前缀，比如 **_https://simpleproxydemo.herokuapp.com/
    img.linux.net.cn/data/attachment/album/202005/23/201448jcxlcci1f1z4c2l2.jpg_**
 3. 访问新的地址，就会自动提醒你下载文件了。

## 使用建议

在实际的使用过程中，我给你的建议是，

 1. 使用 Heroku 部署 + 使用 Cloudflare 加速 + 一个短域名

这样可以让你的使用体验达到最佳。

## 如何自己部署

参考：https://github.com/bestony/simple-proxy

## 原理

Simple Proxy 的代码十分简单，加入了大量的注释，也不过 51 行。

最为核心的代码源自于其中的

    ```javascript
    res.set({
      'Content-Disposition': `attachment; filename=${filename}`
    })
    Code language: JavaScript (javascript)
    ```

这段代码的用户是为返回值设定 Header ，其中用到的 Header `Content-Disposition` 是
HTTP 协议早期定义的 Header 规范。

如果你将其值设置为 `inline`，其内容将会直接展示在界面中；

其值设置为 `attachment` 则可以启动系统浏览器自带的下载功能。

其值中加入 `filename` 则可以更进一步，在下载时，指定下载的名称，在本次的项目中，
就借助了这样的功能，让下载的文件名不发生改变。

## Reference

 * [Content-Disposition](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/Content-Disposition)
 * [Use of the Content-Disposition Header Field in the Hypertext Transfer Protocol (HTTP)](https://tools.ietf.org/html/rfc6266)
 * [Communicating Presentation Information inInternet Messages:The Content-Disposition Header Field](https://tools.ietf.org/html/rfc2183)

## Comments

### By: 轶哥

- Link: https://www.ixiqin.com/2020/05/23/write-a-simple-relay-tools/#comment-175
- Published: 2020-06-02T13:58:43+08:00

这玩意儿太有用了。感谢分享\~！
