Greasemonkey: xmlHttpRequest.openは、プロトコルとホストのないパスを受け入れなくなりました

作成日 2017年12月14日  ·  9コメント  ·  ソース: greasemonkey/greasemonkey

IIは、jesus2099 / konami-command#372で、Firefox v57 + Greasemonkeyv4が完全なURL https?://host.tld/pathnameでのみ機能し、 /pathnameだけで
Firefox v57 +別のGMエンジンはこのリグレッションの影響を受けません。これが、ここでチケットを開く理由です。

全てのコメント9件

回避策では、URLの前にself.location.protocol + "//" + self.location.host +を追加する必要がありました。

コンテンツスクリプトコンテキスト(ユーザースクリプトが実行される)からリクエストを実行するには、完全なURLを使用する必要があります。

https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Chrome_incompatibilities#Content_script_requests_happen_in_the_context_of_extension_not_content_page

完全なURLを使用したくない場合は、 window.wrappedJSObjectのメソッドを使用し、 exportFunction()を使用して実行に必要な関数(onreadystatechangeなど)をエクスポートできます。 私の提案は、完全なURLを使用することです。

ご協力ありがとうございます。
わかりました。つまり、WebExtensionsシステムの仕様に準拠しているということですよね。
私はこのWebExtensionsのものを知りませんが、それは標準のようです…?
著者のブログ投稿の
この回帰は永続的であると確信していますか?

この回帰は永続的であると確信していますか?

多分。 よくわかりません。 適切なサンドボックスを作成できれば、おそらく<strong i="7">@grant</strong> noneではこれらの問題は発生しません。 ただし、いくつかの特権APIが必要な場合は、これらの手順が必要になる場合があります。 ボールは本当にMozillaの法廷にあります。

FTR私のスクリプトは<strong i="5">@grant</strong> noneスクリプトです。
プロジェクトリーダーにこのチケットを閉じるか閉じさせます。
適応します。

これは意図されたものではないので、永続的であると期待されるべきではありません。 ルートとしてのドキュメントに基づいて、非絶対パスを完全に解決できます。

正しいベースURLは次のとおりであることに注意してください: document.baseURI<base href="...">

確認できますが、jQueryAJAXはパスURLのみでは機能しません。
Firefox 57、最新のGreasemonkey。

$.ajax({
  url: '/some/path',
  success: () => {}
});

私のAJAXは古いFirefox(WebExtensions以前)で動作します

上記の修正は、新しいベータバージョンにパッケージ化されています。
https://addons.mozilla.org/firefox/downloads/file/830369/greasemonkey-4.2beta1-an+fx.xpi?src=devhub

テストと確認をいただければ幸いです。

このページは役に立ちましたか?
0 / 5 - 0 評価