经过网络转发后,译文管理没有译文怎么办
经过网络转发(或再一些高安全场景,你可能部署后,只开放一个 translate.json 接口对外使用,中间自己做权限认证拦截等)后,如果操作不当,会造成 请求头、响应头、回源host 等有数据丢失。
此时导致的功能异常,就比如 内存缓存 不生效了、又或者管理后台中的 译文管理 中,没有新的 原文-译文 对应数据产生了。
这种情况,正常来说需要排查你做网络转发时,是否有过滤了某些参数导致参数传递时丢失导致。但这种排查属于纯粹的找BUG,属于一次性的消耗时间精力、努力奋斗却对以后没有什么优势的掉头发行为。 于是出了另一个方案来解决这个问题:
第一步,domain.json 增加一项
domain.json 中增加一项,其中domain填写一个32位的uuid 比如:
{"dayMaxSize": 50000000,"domain": "cf2577e313014e8ab86ac4e1fadda175","maxCacheFileSize": 500000000,"maxCacheMemorySize": 1000000000},
注意看这里, domain 配置的不再是域名了,而是一个 32位的uuid (这里你自己随便生成一个填上就行,什么值有你来定。后面用到)
第二步,translate.js 增加设置
在网页中,设置 translate.js 的地方,增加一项 网络请求自定义附加参数 的设置:
translate.request.appendParams = {key:'cf2577e313014e8ab86ac4e1fadda175'}
这里,key 的值便是第一步中,domain 的值,这两个对应起来。
注意这行代码添加的位置,要放在 translate.execute(); 触发翻译之前
第三步,网页中执行语言切换进行翻译
为了避免浏览器有翻译结果的缓存,你需要先清理一下你浏览器的 localStorage
这样再语言切换时,就会能正常产生下图的请求你的翻译接口了
可以看到,它请求 translate.json 翻译接口时,post 请求的数据中,已经携带了这个key了
第四步,译文管理中查看
回到译文管理,将搜索条件全部清空后,进行搜索,即可看到:
这里的 域名/key 这一项,便是你第一步添加的 32位 uuid