このajax rquestを送信すると:
$.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
$.ajax
メソッドdoesはHTTP PATCHをサポートします。
あなたが見ている問題は、ajax
メソッドがオプションのAccess-Control-Allow-Methods
応答ヘッダーでPATCHを探すことです プリフライトチェック 。応答からこのヘッダーが欠落しているか、PATCHメソッドがこのヘッダーの値に含まれていませんでした。どちらの場合でも、問題はクライアント側のコードではなくサーバーにあります。
Javaを使用した例を次に示します。
response.addHeader("Access-Control-Allow-Methods", "GET, POST, PATCH, PUT, DELETE");
ブラウザがPATCHメソッドをサポートしていない可能性がありますか?
作成するリクエストのタイプ(「POST」または「GET」)。デフォルトは「GET」です。注:PUTやDELETEなどの他のHTTP要求メソッドもここで使用できますが、すべてのブラウザーでサポートされているわけではありません。