私は、htmlページのjavascriptを使用してAjax GET呼び出しを行うプロトタイプアプリケーションを構築しています。私が使用しています構成は次のとおりです。Windows7上のApache Serverを経由したMongoDBへのCORSアクセス
のWindows/Apache Webサーバ(XAMPP) MongoDBの Chromeブラウザ
すべて同じのWindows7(32)マシン上で実行されています。 mongodbサーバーとデータはC:\パスにインストールされます。 ApacheサーバーはC:\ XAMPPパスにあります。ブラウザから直接MongoDBサーバーにアクセスできます。たとえばへの呼び出し:
はlocalhost:28017 /データベース/コレクション
はJSON形式でコレクションのデータを返します。私はhtmlページを経由してJavaScriptで同じAjax呼び出しを実行してみた場合
はしかし、私はエラーを取得:// localhostを:28017 /データベース/コレクション
のXMLHttpRequestは、httpをロードすることはできません。要求されたリソースに「Access-Control-Allow-Origin」ヘッダーが存在しません。したがって、 'http:// localhost'はアクセスが許可されていません。
私は/私のhttpd.confファイルを検査修正し、ため、次のセットがあります。
のLoadModule headers_moduleモジュール/ mod_headers.so
を:私もheaders_moduleがロードされていることを確認した<Directory />
Header always set Access-Control-Allow-Origin "*"
Header always set Access-Control-Max-Age "1000"
Header always set Access-Control-Allow-Headers "X-Requested-With, Content-Type,
Origin, Authorization, Accept, Client-Security-Token, Accept-Encoding"
Header always set Access-Control-Allow-Methods "POST, GET, OPTIONS, DELETE, PUT"
AllowOverride none
Require all denied
</Directory>
を
ただし、これは機能しません。ポート番号は、htmlとajaxの間で変更されています(80対28017)。したがって、新しいドメインです。ここで
スクリプトコードです:ここで
var xhr = new XMLHttpRequest();
console.log("xhr open")
xhr.open("GET", "http://localhost:28017/ database/ collection/", false);
xhr.send();
は、HTMLコールからのレスポンスヘッダは以下のとおりです。
Accept-Ranges:bytes
Access-Control-Allow-Headers:X-Requested-With, Content-Type, Origin, Authorization, Accept, Client-Security-Token, Accept-Encoding
Access-Control-Allow-Methods:POST, GET, OPTIONS, DELETE, PUT
Access-Control-Allow-Origin:*
Access-Control-Max-Age:1000
Connection:Keep-Alive
Content-Length:564
Content-Type:text/html
Date:Mon, 09 Jan 2017 23:47:06 GMT
ETag:"234-545b12ed82b40"
Keep-Alive:timeout=5, max=100
Last-Modified:Mon, 09 Jan 2017 22:49:41 GMT
Server:Apache/2.4.23 (Win32) OpenSSL/1.0.2h PHP/5.5.38
そしてXHRコールからのすべてのヘッダー:
General
Request URL:http://localhost:28017/ database/ collection/
Request Method:GET
Status Code:200 OK
Response Headers
Connection:close
Content-Length:369
Content-Type:text/plain;charset=utf-8
x-action:
x-ns:database.collection
Request Headers
Accept:*/*
Accept-Encoding:gzip, deflate, sdch, br
Accept-Language:en-US,en;q=0.8
Connection:keep-alive
Host:localhost:28017
Origin:http:// localhost
Referer:http://localhost/ load_mongodb_data.html
User-Agent:Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36
どんな援助も感謝します
私はMongoDBサーバーがヘッダーを提供しなければならないことがわかります。ありがとう、それは非常に有用です。 – user2653942