5

私の問題は、GET リクエストが承認されていないことです。しかし、ヘッダーまたは URL の値 (API キー、ユーザー名、パスワード) として承認を追加しようとしても成功しません。

例えば。

$.ajax({
  type: 'get',
  async:   false,
  beforeSend: function(xhr){
    xhr.setRequestHeader('Authorization', 'Basic encodedusername:passwordhere');
  },
  url: "https://api.pingdom.com/api/2.0/checks",
  success: function(Data) {
    console.log(Data);
  },
    error: function(Data) { 
  }
});

Pingdom API とやり取りするための Javascript 構文を修正する方法についてアドバイスをくれる人はいますか? 私は間違って承認しようとしていると信じています。彼らのドキュメントは、この状況では使用できない PHP に焦点を当てています。

https://www.pingdom.com/services/api-documentation-rest/#authentication

4

2 に答える 2

0

Web ブラウザーで Javascript から Pingdom API を使用することはできないと思います。

サイト間で ajax リクエストを許可するには、jsonp を使用する必要がありますが、この応答によると、jsonp リクエストにヘッダーを設定することはできません。

于 2013-10-19T12:02:06.510 に答える
0

CORS Anywhere を使用します。

私たちのプラットフォームの最後の Pingdom の結果をチェックする単純な jQuery リクエストが機能するようにしたかったのです。CORS と、認証用のカスタム ヘッダーを指定する必要があるため、これは不可能と思われました。

それほど単純なもののためにプロキシサーバーをセットアップしたくなかったので、この回答を見つけて、次のようなCORS Anywhereメソッドを使用できました。

// Will use the cors-anywhere proxy if jQuery supports it and crossDomain option is passed in.
$.ajaxPrefilter( function (options) {
  if (options.crossDomain && jQuery.support.cors) {
    var http = (window.location.protocol === 'http:' ? 'http:' : 'https:');
    options.url = http + '//cors-anywhere.herokuapp.com/' + options.url;
    // options.url = "http://cors.corsproxy.io/url=" + options.url;
  }
});

// Use ajax requests as normal.
$.ajax({
  type: 'get',
  async:   false,
  crossDomain: true,
  beforeSend: function(xhr){
    xhr.setRequestHeader('Authorization', 'Basic encodedusername:passwordhere');
  },
  url: "https://api.pingdom.com/api/2.0/checks",
  success: function(Data) {
    console.log(Data);
  },
    error: function(Data) { 
  }
});

注: 機密情報を渡したり取得したりする場合は、これを使用しないでください。その場合は、独自のプロキシを使用する必要があります。しかし、私たちのように公開データを取得するだけの場合、これは CORS の制限を回避するための優れたクリーンな方法であるはずです。

于 2017-05-30T04:47:33.283 に答える