5

これが私がこれまでに試したことです。

<html>
  <head>
    <title>bugstats.com</title>
  </head>
<script type="text/javascript"     src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<script type="text/javascript" src="http://jquery-json.googlecode.com/files/jquery.json-    1.3.min.js"></script>
<script type="text/javascript" >
function hello(){
var myObject = {"method":"User.login", /* is this the right method to call? */
"params":[  { "login" :"user", /*should i include the login credentials here? */
"password" : "pass123" , 
"remember" : "True"} ]  };
var enc = $.toJSON(myObject);

$.ajax({"contentType":"application/json",
    "data": enc, 
    "crossDomain":"true",
    "dataType": "json", 
    "url": "https://bugzilla.company.com/bugzilla/jsonrpc.cgi", /* is this correct or should it be https://bugzilla.company.com/bugzilla/jsonrpc.cgi?method=User.login? */ 
    "type": "POST",
    success: function(){
            alert("Hallelujah");
                console.log(arguments); 

             },
    error: function () {
    alert("Failed")
    }

   });
}
function parseResponse(obj){
 alert("Success")
 console.log(obj)
}
</script>
  <body>
    <h1>bugzilla.com</h1>
    <input type="button" onclick="hello()" value="Click">
</body>

このJSONPRCを読んで、遠くまでは行かない。

ボタンをクリックすると-電話をかけ、ログイン/何かをするために-次のエラーが発生します-

OPTIONS https://bugzilla.company.com/bugzilla/jsonrpc.cgi 403 (Forbidden) jquery.min.js:19
XMLHttpRequest cannot load https://bugzilla.company.com/bugzilla/jsonrpc.cgi. Origin http://172.16.229.137 is not allowed by Access-Control-Allow-Origin.

私の理解では、「Access-Control-Allow-Origin」は「同一生成元ポリシー」の問題が原因で発生するため、「jsonp」を使用する必要があります。ただし、Jsonp-つまり、スクリプトインジェクションはGETリクエストを介してのみ実行できます。しかし、GETリクエストで同じJSスクリプトを試してみると、次のようになります。

code: 32610
message: "For security reasons, you must use HTTP POST to call the 'User.login' method."

Webサービスを介して接続/ログインする方法について混乱しているので、ここでは明らかに何かおかしなことをしています。誰かが接続してバグの詳細を取得するのを手伝ってくれるなら、大いに役立ちます。今8-10日..:(

ご参考までに:

  • サーバーにアクセスできません

  • クライアントをセットアップしていて、Bugzillaサーバーにアクセスしています

その他のリンク、

Ajaxコール

ログイン

BugzillaApc

Googleグループ-ライブ会話

4

1 に答える 1

5

Bugzilla_loginすべての呼び出しを認証するには、パラメーターとパラメーターを使用する必要がありBugzilla_passwordます。これは、jsonpを使用してGETになります。User.get例として使用すると、呼び出しは次のようになります。

// Method parameters
var params = [{
  /* The authentication parameters */
  "Bugzilla_login": "YourUserName",
  "Bugzilla_password": "YourPassword",
  /* The actual method parameters */
  "ids": [1, 2]
}];
var myObject = {
  "method": "User.get",
  "params": JSON.stringify(params)
};

$.ajax({"contentType": "application/json",
    "data": myObject, /* jQuery will handle URI encoding */
    "crossDomain": "true",
    "dataType": "jsonp", /* jQuery will handle adding the 'callback' parameter */
    "url": "https://bugzilla.company.com/bugzilla/jsonrpc.cgi", 
    "type": "GET",
    ...

次の理由により、この方法で行う必要があります。

  • クロスドメイン通話を行います
  • Access-Control-Allow-Originjsonpを介して設定する必要があるような設定はできないため(またはプロキシですが、jsonpの方が簡単です)
  • jsonpは必然的にGETリクエストであり、POST

関連するドキュメント:

于 2012-07-31T22:38:06.623 に答える