web-dev-qa-db-ja.com

クロスドメインAjax呼び出しAtomシェル

Atom Shell(現在は electron )として知られている)を使用して、Webアプリケーションをデスクトップアプリとしてラップし、CORSの制限のためにクロスドメインajax呼び出しを行うのに問題があります。

また、 nw.js (以前はNode-Webkitと呼ばれていました)を試しましたが、クロスドメインのajax呼び出しを問題なく行うことができました。 Atom Shell(Electron)はデフォルトでクロスドメイン呼び出しを制限していますか?

10
Raathigesh

Webページが「file://」モードでロードされ、httpサーバーによって提供されていない場合、デフォルトでajax呼び出しを行うことができます。

それでもCORS制限に問題がある場合は、次のオプションをブラウザウィンドウオブジェクトに設定できます。

var BrowserWindow = require('browser-window');
var win = new BrowserWindow({
  webPreferences: { webSecurity: false }
});
19
Lionep

ここには2つの問題があります

クライアントがリクエストを開始できないようにするCORS制限、およびサーバーによって設定されるAccess-Control-Allow-Originヘッダー。

最初の問題は、前述のように、ブラウザウィンドウオブジェクトにWebセキュリティオプションを設定することで解決されます。

"web-preferences" : {
    "web-security" : false
},

ElectronがリクエストのOriginの値として実際に「file://」を送信する2番目の問題には、私が知る限り解決策がありません。オプションは、Access-Control-Allow-Originヘッダー(サーバー側)で「file://」または「*」を許可することです。

私は実際にリクエストに基づいてオリジンを設定することを許可するようにリクエストしましたが、あまり牽引力がないのではないかと思います。

8
ArkTekniK

ソリューションの更新された構文:

var BrowserWindow = require('browser-window');
var win = new BrowserWindow({
    webPreferences: {webSecurity: false}
});
7
mim