Não é permitido buscar o pedido de patch

Eu tenho dois aplicativos, um é um front-end reativo e o segundo é o aplicativo rails-api.

Eu tenho usado com alegria isomorphic-fetch até que eu precisava enviar o método PATCH para o servidor.

Estou obtendo:

Fetch API cannot load http://localhost:3000/api/v1/tasks. Method patch is not allowed by Access-Control-Allow-Methods in preflight response. 

mas a resposta OPÇÕES do servidor inclui um método PATCH em uma lista de Access-Control-Allow-Methods:

insira a descrição da imagem aqui

É assim que a busca é implementada:

 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 são configurados praticamente o mesmo e eles estão funcionando bem.

Alguma idéia do que está acontecendo aqui?

ATUALIZAR:

Patch de método diferencia maiúsculas de minúsculas:

https://github.com/github/fetch/blob/master/fetch.js#L200

Não com certeza se isso se destina ou um bug.

UPDATE 2

Isto é pretendido e o tipo de método PATCH precisa ser sensível a maiúsculas e minúsculas. Atualizando a linha do método fetch para:

 method: 'PATCH' 

corrige o problema.

https://github.com/github/fetch/issues/254

Eu tive um problema muito parecido com o frontJs e o Rail APIs usando o Rack :: Cors, e adicionando patch na lista de methods permitidos resolveu o problema para mim.

 config.middleware.insert_before 0, Rack::Cors do allow do origins '*' resource '*', headers: :any, methods: [:get, :post, :patch, :options] end end 

Eu tive esse erro enquanto PATCH era de todas as capas. Eu também estava recebendo esse erro com DELETE e PUT também. Eu verifiquei os headers da minha fetch e eu vi um método OPTIONS . Eu estava usando o isomorphic-fetch lib aqui – https://www.npmjs.com/package/isomorphic-fetch

A correção para mim foi adicionar à minha página PHP:

  

Sem isso, no Firefox 53 continuaria recebendo o erro de JavaScript:

NetworkError ao tentar buscar resources.

A busca que eu estava fazendo era a seguinte:

 try { await fetch('https://my.site.com/', { method: 'PATCH', headers: { 'Content-Type':'application/x-www-form-urlencoded' }, body: 'id=12&day=1' }); } catch(ex) { console.error('ex:', ex); } 
    Intereting Posts