1

この答えは私を大いに助けましたが、私の問題を完全には解決していません。私はそれに似たコードを使用しています。それは次のとおりです。

function getResponse() {

    var the_url = "http://www.myurl.com/api/get";

    $.ajax({
      url: the_url,
      dataType: 'jsonp',
      type: 'get',
      success: function(data) {
        var json_response = data;
        alert(data);
      }
    });
}

基本的に、URLを投稿するだけでなく、認証のためにカールを投稿する必要があります。

この例は単純なURLで正常に機能しますが、「the_url」に使用したいのは次のとおりです。

var the_url = 'curl -u username:password "http://www.myurl.com/api/get"';

これは私が問題を抱えているところです。つまり、成功ステートメントに到達することはありません。

これを解決するための最良の方法は何ですか?それが達成できない場合、誰かが最良の回避策を推奨できますか?

前もって感謝します。

4

3 に答える 3

3

単純な AJAX を使用している場合は、AJAX 呼び出しの最初にカスタム (基本認証) ヘッダーを追加するだけで済みます。<script>しかし、実際にはHTML にタグを追加するのと同等の JSONP を使用しています。

あなたが求めているのは、<script>タグで基本認証を行うことはできますか? いいえ、できません。

あなたに残された唯一の可能性は、Matt Gibson が提案したように、サーバー側の処理を行うことです。

ただし、ブラウザーは JSONP 要求の後に認証ダイアログを起動する必要があることに注意してください (この回答も参照してください)。あなたの場合はうまくいきませんか??

于 2012-07-03T14:26:52.277 に答える
3

JavaScript が指すサーバー上のページが必要です。このページには、curl コマンドが含まれています。そのようなURLとしてcURLを直接実行することはできません。

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $the_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_REFERER, $_SERVER['REQUEST_URI']);
$result = curl_exec($ch);
curl_close($ch);
echo $result;
于 2012-07-03T14:23:01.540 に答える
2

jquery ajax呼び出しを更新して、HTTP 認証のusernameおよびオプションを含めます。ドキュメントの詳細オプションを参照してください。passward

If the server performs HTTP authentication before providing a response,
the user name and password pair can be sent via the username 
and password options.

コメントで指摘されているように更新します。質問者が使用したように、 HTTP authentication は単にJSONP では機能しません(見ませんでした、私の悪い)。とにかく、JSONPを使用していない他の人が見つけられるように、この回答をここに残します。

于 2012-07-03T14:24:21.460 に答える