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

/shareのurlパラメータに渡した内容が完全にデコードされてしまうため、日本語を含むURLがMFMに正しく認識されない #11002

Closed
alpaca-honke opened this issue Jun 13, 2023 · 8 comments · Fixed by #13846
Labels

Comments

@alpaca-honke
Copy link

💡 Summary

/shareに渡すパラメータのうち、urlに渡した値のURIエンコードが全てデコードされてしまうため、URLに日本語などが含まれていた場合それ以降がURLとして認識されないため、すべて正しくURLとして認識されるようにしていただきたい

🥰 Expected Behavior

ふたつのオプションが考えられます
①urlパラメータに渡された値のうち、日本語部分などのみデコードを行わないことで、MFMに認識されるようになる
②MFMがURLを認識する際に日本語などを含んでいても認識されるようになる

🤬 Actual Behavior

/shareに渡すurlパラメータに日本語などが含まれると、投稿する際にそれ以降がURLとして認識されない

📝 Steps to Reproduce

  1. /shareに渡すurlパラメータに、1度だけURIエンコードをかけた、日本語を含むURL(例えば、 https://github.com/alpaca-honke/twishare-to-misskey/wiki/よくある質問 )を渡す
  2. 投稿フォームに日本語にデコードされたURLが入り、日本語部分以降がURLとして認識されない

📌 Environment

💻 Frontend

  • Model and OS of the device(s):Redme Note 10 JE, MiUI Global 14.0.12 (Based on Android 13 TKQ1.220905.001)
  • Browser: Kiwi Browser 112.0.5615.137
  • Server URL: ①misskey.io ②misskey.noellabo.jp
  • Misskey:
    ①13.12.2 ②13.13.2

🛰 Backend (for server admin)

  • Installation Method or Hosting Service:
  • Misskey: 13.x.x
  • Node: 18.x.x
  • PostgreSQL: 15.x.x
  • Redis: 7.x.x
  • OS and Architecture:

備考

当然ではありますが、二重エンコードすれば正常に動作することを確認しています。
当分は二重エンコードしてtextの末尾に含めることで(修正後も)対応可能かと考えてはいます。

@alpaca-honke alpaca-honke added the ⚠️bug? This might be a bug label Jun 13, 2023
@acid-chicken
Copy link
Member

挙動としては正しそう(つまり二重エンコードすべきよう)に思う

@tamaina tamaina removed the ⚠️bug? This might be a bug label Jun 13, 2023
@tamaina
Copy link
Contributor

tamaina commented Jun 13, 2023

日本語部分がURLであるかどうかをMisskey側では判断できないし…

@tamaina tamaina closed this as not planned Won't fix, can't repro, duplicate, stale Jun 13, 2023
@acid-chicken
Copy link
Member

URL パラメータって URLSearchParams そのもののことではなく url パラメーターの話か

const url = urlParams.get('url');

@acid-chicken acid-chicken reopened this Jun 13, 2023
@acid-chicken acid-chicken added the 🐛Bug Unexpected behavior label Jun 13, 2023
@acid-chicken
Copy link
Member

if (url) noteText += `${url}`;

ここを <${url}> とすれば直る

@tamaina
Copy link
Contributor

tamaina commented Jun 13, 2023

あ〜

@esperecyan
Copy link

< > で囲むようにしても、URLに > が含まれている場合はうまくいきません。
https://misskey.io/share?url=https%3A%2F%2Fexample.com%2F%3C%E6%97%A5%E6%9C%AC%E8%AA%9E%3E

URLパーサーにかけた結果を本文に入れるのが良いのではないかと思います。

new URL('https://example.com/<日本語>').href
// ※URLとして取り扱えない文字列に対しては例外が出るので対処が必要

https://example.com/%3C%E6%97%A5%E6%9C%AC%E8%AA%9E%3E

@Sayamame-beans
Copy link
Collaborator

Sayamame-beans commented Jan 11, 2024

< > で囲むようにしても、URLに > が含まれている場合はうまくいきません。

こちらの現象はDiscord等でも同様のようです。
現状、MFMで使われる]などについても同様なので、気にしなくて良いのではないでしょうか…?

@anatawa12
Copy link
Member

MFM層でURLに>がそのまま含まれてる場合に対応しないのは問題ないと思いますが、?url=に関しては対応したほうが良さそうに思います。URL Standardのparserはvalidation errorは出しますがパースは続行され>がURLEncodeされるのが定義されているため

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

Successfully merging a pull request may close this issue.

6 participants