35

このajaxrquestを送信すると:

$.ajax({
            headers : {
                'Accept' : 'application/json',
                'Content-Type' : 'application/json'
            },
            url : 'http://localhost:8080/wutup/venues/12',
            type : 'PATCH',
            data : JSON.stringify({description: "842490812321309213801923 gonzagazors"}),
            success : function(response, textStatus, jqXhr) {
                console.log("Venue Successfully Patched!");
            },
            error : function(jqXHR, textStatus, errorThrown) {
                // log the error to the console
                console.log("The following error occured: " + textStatus, errorThrown);
            },
            complete : function() {
                console.log("Venue Patch Ran");
            }
        });

このエラーが表示されます:

XMLHttpRequestはhttp:// localhost:8080 / wutup /venues/12をロードできません。メソッドPATCHは、Access-Control-Allow-Methodsでは許可されていません。

ただし、curlを使用する:

 $ curl -v -H "Accept: application/json" -H "Content-type: application/json" -X PATCH -    d' {"address": "8421 Gonzaga Ave"}'  http://localhost:8080/wutup/venues/12 

About to connect() to localhost port 8080 (#0)
Trying 127.0.0.1... connected
Connected to localhost (127.0.0.1) port 8080 (#0)
PATCH /wutup/venues/12 HTTP/1.1
User-Agent: curl/7.21.1 (i686-pc-mingw32) libcurl/7.21.1 OpenSSL/0.9.8r zlib/1.2.3
Host: localhost:8080
Accept: application/json
Content-type: application/json
Content-Length: 57

HTTP/1.1 204 No Content
Server: Apache-Coyote/1.1
Access-Control-Allow-Origin: *
Date: Fri, 30 Nov 2012 08:14:35 GMT

Connection #0 to host localhost left intact
Closing connection #0
4

2 に答える 2

35

この$.ajaxメソッドHTTP PATCH をサポートしています。

表示されている問題は、メソッドが options preflight checkの応答ヘッダーでajaxPATCH を検索することです。このヘッダーが応答にないか、このヘッダーの値に PATCH メソッドが含まれていませんでした。いずれの場合も、問題はクライアント側のコードではなく、サーバーにあります。Access-Control-Allow-Methods

Java を使用した例を次に示します。

response.addHeader("Access-Control-Allow-Methods", "GET, POST, PATCH, PUT, DELETE");
于 2012-12-01T05:10:20.330 に答える
0

お使いのブラウザが PATCH メソッドをサポートしていない可能性がありますか?

jQuery AJAX API documentationから取得:

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

于 2012-11-30T09:21:08.637 に答える