मेरे पास एक रेल 3.1 ऐप है जो पेपरक्लिप मणि (v 3.4.0) का उपयोग करता है। संक्षेप में। मेरे पास एक कहानी मॉडल और एक पोस्ट मॉडल है। एक कहानी में कई पद हो सकते हैं।सीएसआरएफ टोकन सत्यापन समस्याओं को ट्रिगर करने वाले पेपरक्लिप मणि
#story.rb
class Story < ActiveRecord::Base
attr_accessible :title, :user_id, :username, :posts_attributes
belongs_to :user
has_many :posts, :dependent => :destroy,
:order => "created_at DESC"
accepts_nested_attributes_for :posts, :reject_if => lambda { |t| t['contents'].nil? }
end
#post.rb
class Post < ActiveRecord::Base
attr_accessible :contents, :photo, :dimensions
belongs_to :story, :touch => true
belongs_to :user, :touch => true
has_attached_file :photo,
:styles => {
:medium => { :geometry => "400x400>" },
:thumb => { :geometry => "100x100>" },
},
:processors => [:thumbnail],
:storage => :s3,
:s3_credentials => "#{Rails.root.to_s}/config/s3.yml",
:path => "/:style/:id/:filename"
before_save :extract_dimensions
serialize :dimensions
validates :contents, :presence => true,
:length => { :maximum => 399,
:minimum => 5 }
validates :user_id, :presence => true
validates_attachment_content_type :photo,
:content_type => ['image/jpeg', 'image/png', 'image/gif', 'image/jpg'],
:message => "Sorry, we don't support that type of image format"
end
आप देख सकते हैं, पदों एक तस्वीर लगाव हो सकता है। मैं इन अनुलग्नकों को प्रबंधित करने के लिए पेपरक्लिप का उपयोग करता हूं।
मैं ऐसे फॉर्म जेनरेट करता हूं जो क्लाइंट पर जावास्क्रिप्ट/jquery के साथ गतिशील रूप से पोस्ट करता है। मेरी समस्या यह है। । । अगर पोस्ट में फोटो अटैचमेंट शामिल नहीं है, तो सब कुछ पूरी तरह से काम करता है। अगर, हालांकि, एक पोस्ट चुकी फ़ोटो लगाव, मैं निम्न त्रुटि संदेश प्राप्त होता है और बाद पोस्ट नहीं करता है:
WARNING: Can't verify CSRF token authenticity
User Load (0.5ms) SELECT "users".* FROM "users" WHERE "users"."id" = 61 LIMIT 1
(0.3ms) BEGIN
(0.2ms) COMMIT
Completed 401 Unauthorized in 238ms
नतीजतन, मेरी सत्र डेटा नष्ट हो जाता है, और मैं भी नहीं देख सकते फायरबग के साथ अनुरोध हेडर। पुट अनुरोध बस फायरबग में प्रकट नहीं होता है।
अब, आश्चर्यजनक रूप से नहीं, मैं इस समस्या को हल PostController में निम्नलिखित के साथ प्राप्त कर सकते हैं:
skip_before_filter :verify_authenticity_token, :only => [:create]
लेकिन मैं इस सुरक्षा देने के लिए नहीं करना चाहती। मैं भी के माध्यम से मेरी फार्म के लिए CSRF हेडर को जोड़े की कोशिश की है js/jQuery:
jQuery.ajaxSetup({
beforeSend: function(xhr) {
xhr.setRequestHeader('X-CSRF-Token', $('meta[name="csrf-
token"]').attr('content'));
}
});
लेकिन उस समस्या का समाधान नहीं होता है, और जैसा कि मैंने ऊपर कहा, मैं भी देखने के लिए अनुरोध हेडर डेटा नहीं देख सकते हेडर
कोई भी इस कारण से आ सकता है कि क्यों पेपरक्लिप समस्या को ट्रिगर करता है?
एक ही समस्या यहाँ – Pasta