質問: XMLHttpRequest cannot load localhost:3000/api/posts. Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https, chrome-extension-resource. という風なエラーがでます。調べたところ、Chromeのセキュリティを下げて起動させることで、正常にデータが取得できるようですが、できませんでした。以下の方法です。 open /Applications/Google\ Chrome.app/ --args --disable-web-security 原因がさっぱりわかりません。一番わからないのは、同様なアプリがあるのですが、それは正常に動作します。そのアプリとの違いはほとんどないように思えるのですが。
回答: Chrome のセキュリティを解除するには --disable-web-security、 --user-data-dir の2つの引数をつける必要があります 以前のバージョンでは --disable-web-security だけを付ければよかったのですが、Chromeのバージョン49以降に仕様が変わったようです ``` $ open /Applications/Google\ Chrome.app/ --args --disable-web-security --user-data-dir ``` クロスオリジンの制約は、ブラウザのアドレスバーに表示される URL と javascript からアクセスする URL を比べて、 プロトコル、ドメイン、ポート のどれかが違えば別のオリジンということになります なので、ドメインが同じでも片方だけ https だったり、ポート番号が違う場合は別のオリジンと判断されます 例えば、Web ページは http://localhost 、API は http://localhost:8080 というような場合でもクロスオリジンの制約には引っかかるので注意です