0

それで、私はRESTful APIをセットアップしていますが、すべてうまくいっているようです。

postman を使用して、ローカル サーバーへの PUT 要求を正常に実行できます。

Status Code: 200 OK
Access-Control-Allow-Methods: GET, POST, PUT, LOGIN, OPTIONS
Access-Control-Allow-Origin: *
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Connection: Keep-Alive
Content-Length: 299
Content-Type: application/json
Date: Sat, 14 Sep 2013 17:56:28 GMT
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Keep-Alive: timeout=5, max=100
Pragma: no-cache
Server: Apache/2.2.25 (Win32) PHP/5.3.19
X-Powered-By: PHP/5.3.19

ただし、次のコードで ajax を使用する場合:

    $.ajax({
        url: SD.AJAX+'users?uname=jamie&pword=jamie',
        dataType: 'json',
        type: 'login',
        data: {
            'uname':'jamie',
            'pword':'jamie'
        },
        crossDomain: true
    });

次のエラーが表示されます。

OPTIONS http://sexdiaires.local/users?uname=jamie&pword=jamie 405 (Method Not Allowed) jquery.js:8526
OPTIONS http://sexdiaires.local/users?uname=jamie&pword=jamie Method LOGIN is not allowed by Access-Control-Allow-Methods. jquery.js:8526
XMLHttpRequest cannot load http://sexdiaires.local/users?uname=jamie&pword=jamie. Method LOGIN is not allowed by Access-Control-Allow-Methods. 

受信したヘッダーが何らかの理由で異なることを認めなければなりませんが、なぜ、ajaxを使用すると何か違うのでしょうか:/

HTTP/1.1 405 Method Not Allowed
Date: Sat, 14 Sep 2013 18:00:38 GMT
Server: Apache/2.2.25 (Win32) PHP/5.3.19
X-Powered-By: PHP/5.3.19
Set-Cookie: PHPSESSID=36an511ifo3jsu6uh6a1fqoc82; path=/
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Access-Control-Allow-Origin: http://sd.local
Content-Length: 3562
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html
4

1 に答える 1

0

type: 'login'有効な HTTP メソッドではないためです。

jQueryのドキュメントから:

type (デフォルト: 'GET') タイプ: 文字列 作成するリクエストのタイプ ("POST" または "GET")。デフォルトは "GET" です。注: PUT や DELETE などの他の HTTP 要求メソッドもここで使用できますが、すべてのブラウザーでサポートされているわけではありません。

使ってみましたtype: 'PUT'か?

于 2013-09-14T18:10:37.123 に答える