私は2つのアプリを持っています。1つは反応フロントエンドで、2つ目はrails-apiアプリです。
PATCH メソッドをサーバーに送信する必要が生じるまで、私はisomorphic-fetchを喜んで使用してきました。
私は得ています:
Fetch API cannot load http://localhost:3000/api/v1/tasks. Method patch is not allowed by Access-Control-Allow-Methods in preflight response.
ただし、サーバーからの OPTIONS 応答には、Access-Control-Allow-Methods のリストに PATCH メソッドが含まれています。
フェッチの実装方法は次のとおりです。
const API_URL = 'http://localhost:3000/'
const API_PATH = 'api/v1/'
fetch(API_URL + API_PATH + 'tasks', {
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
method: 'patch',
body: JSON.stringify( { task: task } )
})
POST、GET、DELETE はほぼ同じように設定されており、正常に動作しています。
ここで何が起こっているのか分かりますか?
アップデート:
メソッド パッチは大文字と小文字を区別します。
https://github.com/github/fetch/blob/master/fetch.js#L200
これが意図されたものなのかバグなのかは不明です。
更新 2
これは意図的なものであり、メソッド タイプ PATCH では大文字と小文字を区別する必要があります。行を fetch メソッドから次のように更新します。
method: 'PATCH'
問題を修正します。