2017-12-12 31 views
0

私は、Node、Express、およびMySQLを使用して自分のWebサイトをローカルに開発しようとしています。これで私はローカルのMySQLサーバをインストールしました。ローカルノードのsvrApp.js Webサーバーを実行してlocalhost:3000(Chromeバージョン62.0.3202.94(公式ビルド)(64ビット)を使用)に接続すると、CORS(クロスオリジンリソース共有)エラーが発生します。CORSエラーを投げる純粋なローカル開発環境

私はCORSについて数多くの研究を行いましたが、それが何であるか、なぜそうであるかなどを得ています。しかし、私がまだ理解していないのは、自分が行っていることがすべてローカル。それはすべて同じドメインでしょうか?同じlocalhost、同じポート。私の同一バージョンのコードは、CORSの処理なしで正常に動作します。だから、私はクロスドメインを使っていると言われているので、ローカルで何が起こっているのですか?私はこれをやる必要があるとは思っていませんが、このCORSエラーの原因となっている問題を見つけることはできません。

ここでCORSを使用しなければならない場合は問題ありませんが、そうであればすべての研究では私がまだ何か根本的なものを欠いています。見つかりました。

以下のコードは、サーバーサイドで生成された選択クエリの結果を使用してテーブルをレンダリングするためにサーバーにSQL要求を行うクライアント側のコードです。ここでも、すべてがローカルにホストされています。ページ、SQLサーバー、そのすべて。

var ip = "localhost:3000/"; 

function afterPageLoad(){ 
var req = new XMLHttpRequest(); 
var data = {}; 
req.open("GET", ip+"EAselect", true); 
req.withCredentials = true; 
req.setRequestHeader("Content-Type", "application/json"); 
req.addEventListener("load", function(dataResponse, status){ 
    if(req.status >= 200 && req.status < 400){ 
     dataResponse = JSON.parse(req.responseText); 
     buildTable(dataResponse); 
    }else{ 
     console.log("Error: " + req.status + ", " + req.statusText); 
    } 
}); 
req.send(JSON.stringify(data)); 
} 

以下は、サーバー上のルートハンドラです。 CORSのアクセスを許可するとされる応答ヘッダーを追加しましたが、喜びはありません。

/* Select Query*/ 
app.get("/EAselect", function(req,res,next){ 
res.header("Access-Control-Allow-Origin", "*"); 
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, 
Content-Type, Accept"); 
pool.query("SELECT * FROM workouts", function(err, rows, fields){ 
    if(err){ 
     console.log("query failure. " + err.description); 
     next(err); 
     return; 
    }else{ 

     res.send(JSON.stringify(rows)); 
    } 
}); 
}); 

私は単純にすべてがローカルであるため、サーバーまたはクライアント上のCORSを実装することなく、私の地元のリソースに接続できることを期待しています。私は取得しています

結果は次のとおりです。

Failed to load localhost:3000/EAselect: Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https. 

私はCORSと、ローカルにホストされたサービスに関連する何かを広くここで検索、しかし、特にこの問題に対処し、何も見つかりませんでした。

これは、関連情報を追加するために私が考えることができるすべてです。私が助けてくれる何かが欠けている場合は、私に知らせて喜んで編集します。私は助けや説明を感謝します。

答えて

1

あなたはプロトコルを指定しようとすることができます:

var ip = "http://localhost:3000/"; 
+0

私の謝罪をこんなに遅く戻ってこれを取得するため。私は仕事の週が起こった。これに目をつけていただきありがとうございます、ハンヌ!その修正により、私はそれを行えるようになりました!ありがとうございました! –

関連する問題