Closed hywlzx closed 2 years ago
该功能能够解决的问题
ttrss打开文章调用的是Article.js 里面的
openInNewWindow: function (id) { /* global __csrf_token */ App.postOpenWindow("backend.php", { "op": "article", "method": "redirect", "id": id, "csrf_token": __csrf_token }); Headlines.toggleUnread(id, 0); },
实际调用了App.js的postOpenWindow方法
postOpenWindow: function(target, params) { const w = window.open(""); if (w) { w.opener = null; const form = document.createElement("form"); form.setAttribute("method", "post"); // 这里的taget是backend.php form.setAttribute("action", App.getInitParam("self_url_prefix") + "/" + target); for (const [k,v] of Object.entries(params)) { const field = document.createElement("input"); field.setAttribute("name", k); field.setAttribute("value", v); field.setAttribute("type", "hidden"); form.appendChild(field); } w.document.body.appendChild(form); form.submit(); } }
可以看到表单发出的请求是根据self_url_prefix拼接的 而反向代理使用了子目录的self_url_prefix配置是不能将子目录写进去的 例如 想通过 rss.example.com/ttrss/ 访问 self_url_prefix需要设置为rss.example.com nginx具体配置可以参考文档 所以就导致了打开文章跳转的是 rss.example.com/backend.php 不会匹配到nginx的子目录中 所以访问失败 App.js里面还有一个方法也是类似的
postCurrentWindow: function(target, params) { const form = document.createElement("form"); form.setAttribute("method", "post"); form.setAttribute("action", App.getInitParam("self_url_prefix") + "/" + target); for (const [k,v] of Object.entries(params)) { const field = document.createElement("input"); field.setAttribute("name", k); field.setAttribute("value", v); field.setAttribute("type", "hidden"); form.appendChild(field); } document.body.appendChild(form); form.submit(); form.parentNode.removeChild(form); }
这个方法注销的时候会用到 也是会有同样的问题
现在的修改方法就是直接下载App.js到服务器 将form.setAttribute("action", App.getInitParam("self_url_prefix") + "/" + target);· 修改为form.setAttribute("action", App.getInitParam("self_url_prefix") + "/ttrss(子目录路径)/" + target);· 然后docker-compose 添加文件映射
form.setAttribute("action", App.getInitParam("self_url_prefix") + "/" + target);·
form.setAttribute("action", App.getInitParam("self_url_prefix") + "/ttrss(子目录路径)/" + target);·
volumes: - ./App.js:/var/www/js/App.js:ro
形容理想的解决方案 是否能够有更加方便的修复方案 由于对nginx配置不是太过了解 是否能够通过nginx解决该问题
其他 任何有助于解决方案开发的信息,如:某插件已实现相关功能。
This issue has been automatically marked as stale because it has not had recent activity in 14 days. It will be closed if no further activity occurs in 7 days. Thank you for your contributions.
该功能能够解决的问题
231
325
ttrss打开文章调用的是Article.js 里面的
实际调用了App.js的postOpenWindow方法
可以看到表单发出的请求是根据self_url_prefix拼接的 而反向代理使用了子目录的self_url_prefix配置是不能将子目录写进去的 例如 想通过 rss.example.com/ttrss/ 访问 self_url_prefix需要设置为rss.example.com nginx具体配置可以参考文档 所以就导致了打开文章跳转的是 rss.example.com/backend.php 不会匹配到nginx的子目录中 所以访问失败 App.js里面还有一个方法也是类似的
这个方法注销的时候会用到 也是会有同样的问题
现在的修改方法就是直接下载App.js到服务器 将
form.setAttribute("action", App.getInitParam("self_url_prefix") + "/" + target);·
修改为form.setAttribute("action", App.getInitParam("self_url_prefix") + "/ttrss(子目录路径)/" + target);·
然后docker-compose 添加文件映射形容理想的解决方案 是否能够有更加方便的修复方案 由于对nginx配置不是太过了解 是否能够通过nginx解决该问题
其他 任何有助于解决方案开发的信息,如:某插件已实现相关功能。