2016-03-22 13 views
0

Bu, birinde iki soru türüdür. Ben Rails oldukça katı ama tepki/redux bir noob ve ben tepki/redux app kimlik doğrulama uygulama ile mücadele ediyorum.Getirme: İçerik türüm neden değişiyor?

Oluşturduğum bir Rails 4 API'm var. İyi test edilmiş ve sağlam. Rails API'm devise-token-auth gem kullanıyor. Bir istek gönderdiğinde

fetch('http://localhost:8080/api/auth/sign_in', { 
    method: 'POST', 
    headers: {'Content-Type': 'application/json', 'Accept': "application/vnd.myproject.v1"}, 
    body: {email: email, password: password}, 
    ... // snip response handling 
}) 

Ve yine, benim API 401 Unauthorized döner ve isteği başarısız olur.

Sunucu günlüğünü kontrol ederek, istek için gönderdiğim gövde görünmüyor.

accept:application/vnd.myproject.v1 
content-type:text/plain;charset=UTF-8 

ben içerik türü artık text/plain olduğunu görüyoruz: my tarayıcının Ağ görünümünde steğinizi çıkarak

params: {"format"=>"json", "controller"=>"devise_token_auth/sessions", "action"=>"create"} 

, aşağıdaki ile sign_in isteği görüyoruz. ("Kabul et" kelimesinin küçük olması ilginç ... Ben de bunu merak ediyorum.)

Birisi bana neler olduğunu açıklayabilir mi?

cevap

0

Çevrim sonrası istekleriyle X-CSRF-TOKEN göndermek gerekir yoksa doğrulama authenticity_token atlamak istiyorsanız

, gibi bir şey kullanabilirsiniz verify_authenticity_token atlamak gerekir: İsterseniz

class ApplicationController < ActionController::Base 
    protect_from_forgery 
    skip_before_action :verify_authenticity_token, if: :json_request? 

    protected 

    def json_request? 
    request.format.json? 
    end 
end 

üstbilgi ayarlamak için, bkz. örnek jQuery Ajax isteği:

   $.ajax({ 
         type: 'POST', 
         dataType: 'script', 
         beforeSend: function (xhr) { 
          xhr.setRequestHeader('X-CSRF-Token', 
           $('meta[name="csrf-token"]').attr('content')); 
         }, url: $(ui.item).closest('.sortable').data("sortable-link"), 
         success: function (data) { 
          .... 
         } 
        }); 
İlgili konular