1

この問題を解決するには支援が必要です。さまざまなことを試しましたが、キーンにアクセスしようとすると、何らかの理由で Origin is not allowed by Access-Control-Allow-Origin エラーがポップアップし続けます

リソースの読み込みに失敗しました: サーバーは 404 (見つかりません) のステータスで応答しました admin:1 XMLHttpRequest はhttps://api.keen.io/3.0/projects/ /queries/を読み込めません。プリフライトの応答に無効な HTTP ステータス コード 404 が含まれています

ここにadmin.jsのコードがあります

<script type="text/javascript">
    var client = new Keen({
    projectId: "id", // String (required always)
    writeKey: "key", // String (required for sending)
    readKey: "key",      // String (required for querying)

    // protocol: "https",         // String (optional: https | http | auto)
    // host: "api.keen.io/3.0",   // String (optional)
    requestType: "jsonp"       // String (optional: jsonp, xhr, beacon)
});
Keen.ready(function() {
    var metric = new Keen.Query("newBusiness", {
        analysisType: "count",
        timeframe: "this_1_month"
    });

    client.draw(metric, document.getElementById("newBusiness-count-chart"), {
        chartType: "metric",
        label: "Count of Businesses"
    });
});

これらはヘッダーとオリジンです

app.all('*', function (req, res, next) {
res.header('Access-Control-Allow-Origin', 'https://api.keen.io:443, fonts.googleapis.com');
res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE');
res.header('Access-Control-Allow-Headers', 'Content-Type, Origin, X-Requested-With, Accept');
res.header('Access-Control-Allow-Credentials', true);
res.header('Access-Control-Allow-withCredentials', true);
next();

});

4

3 に答える 3

2

上記の構成にはいくつかの問題があります。これを試してください:

var client = new Keen({
  projectId: "id",
  writeKey: "key",
  readKey: "key",
  requestType: "jsonp"
});

Keen.ready(function() {
  var metric = new Keen.Query("count", {
    eventCollection: "newBusiness", // assuming this is the collection name?
    timeframe: "this_1_month"
  });
  client.draw(metric, document.getElementById("newBusiness-count-chart"), {
    chartType: "metric",
    title: "Count of Businesses"
  });
});
于 2016-06-22T02:33:10.317 に答える
2

Response for preflight has invalid HTTP status code 404」というメッセージは、サーバーがタイプ OPTIONS のリクエストを適切に処理していないことを示しています。「プリフライト リクエスト」は、サーバーが実際のリクエストを受け入れるかどうかを最初に確認するブラウザに関連しています。たとえば、あなたのコードが

GET http://another-server.com/blah

次に、最新のブラウザは最初に次のリクエストを行います。

OPTIONS http://another-server.com/blah(そして、ヘッダー適切な値を使用して)、応答ヘッダーに特別な値を期待し、その後でのみ元のGET.

多少予測できませんが、これらのOPTIONSリクエストが Chrome/Firefox/IE dev-tools (F12) のネットワーク セクションに記録されていることを確認できます。

つまり、そのサービスは CORS をサポートするように設計されていないか、適切にコーディングされていません。

于 2016-03-17T21:48:50.883 に答える