1

最近、Chrome 拡張機能を Microsoft Edge に移行しました。Edge にはネイティブ メッセージングが実装されていないため、Edge 拡張機能のバックグラウンド ページを介して websocket によってネイティブ アプリと通信したいと考えています。

テストの結果、バックグラウンド ページで websocket が外部ホストに正常にアクセスできることがわかりましたが、localhost ではアクセス '127.0.0.1' が失敗しました。そして、Web ページで localhost にアクセスしようとしましたが、成功しました!

Edge ブラウザー情報: userAgent: "Mozilla/5.0 (Windows NT 10.0; Win64; x64; ServiceUI 8) AppleWebKit/537.36 (Gecko のような KHTML) Chrome/51.0.2704.79 Safari/537.36 Edge/14.14393" "ローカルホスト ループバックを許可する" をチェックしました(これにより、デバイスが危険にさらされる可能性があります)" from about:flags.

Edge 拡張機能の背景ページは localhost へのアクセスをサポートしていますか? もしそうなら、どうすればそれを達成できますか? そうでない場合、誰か助けてもらえますか?

この例として WebSocket サーバーを実行します: https://blog.idrsolutions.com/2013/12/websockets-an-introduction/

拡張機能はhttps://github.com/chhxia/Edge-Extensionからダウンロードできます。エッジ拡張バックグラウンド js のコード:

var ws;
function openSocket(){
    var socket, path;
    // path = 'wss://echo.websocket.org'; // successfully access this path.
    path = 'ws://localhost:8080/EchoChamber/echo';
    console.log( '===> Tested path :: ', path );
    try {
        ws = new WebSocket( path );
    }
    catch ( e ) {
        console.error( '===> WebSocket creation error :: ', e );
    }

    ws.onopen = function(){
        alert('open...');
        ws.send('text');
    }

    ws.onmessage = function(e){
        alert("receive: " + e.data);
    }

    ws.onclose = function(e){
        ws = undefined;
        alert('close...' + e);
    }
}

(function(){
    openSocket();
    browser.browserAction.onClicked.addListener(function(tab) {
        if(ws === undefined){
            openSocket();
        }else if(ws && ws.readyState === WebSocket.OPEN){
            alert('send');
            ws.send('text');
        }else{
            alert('websocket is closed.');
        }            
    });
})();
4

3 に答える 3

1

数回のクリックを節約するために: IE、Chrome、および Firefox では許可されていますが、Edge では許可されていません。Microsoft は、Edge 拡張機能での localhost へのアクセスは設計によりブロックされていると述べています。

「次のリリースに向けてネイティブ メッセージングに取り組んでおり、ネイティブ メッセージングを使用することがこのシナリオを解決する正しい方法です。拡張機能のバックグラウンド ページからローカルホスト アクセスが有効にならないのは、設計によるものです。」

https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/8984919/

...そして、Edge のネイティブ メッセージングには UWP ホストが必要です。

「高レベルでは、Microsoft Edge 拡張機能はネイティブ メッセージングに Chrome および Firefox 拡張機能と同じ API を使用します。ただし、ネイティブ メッセージング ホストは、ユニバーサル Windows プラットフォームを使用して実装する必要があります。」

https://docs.microsoft.com/en-us/microsoft-edge/extensions/guides/native-messaging

于 2017-11-21T06:58:30.530 に答える
0

Microsoft Edge 拡張機能のバックグラウンド ページから localhost にアクセスする

https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/8984919/

于 2016-10-12T03:30:47.330 に答える