मैं एक ऐप पर काम कर रहा हूं, जहां सर्वर और एपीआई उपभोक्ता ग्राहक अलग-अलग डोमेन के अंतर्गत रहते हैं, इसलिए मैं CORS का उपयोग करना चाहता हूं। ऐसा करने के लिए, मैं जवाब में सर्वर इसी http हेडर सेट करना होगा:उपयोगकर्ता को अधिकृत नहीं होने पर CORS शीर्षलेख कैसे भेजें (401 प्रतिक्रिया)
def cors_set_access_control_headers
headers['Access-Control-Allow-Origin'] = 'http://localhost'
headers['Access-Control-Allow-Methods'] = 'POST, GET, OPTIONS'
headers['Access-Control-Allow-Headers'] = '*, X-Requested-With, X-Prototype-Version, X-CSRF-Token, Content-Type'
headers['Access-Control-Max-Age'] = "1728000"
end
इस विधि ApplicationController
में एक before_filter
के रूप में प्रयोग किया जाता है।
कुछ संसाधनों के लिए उपयोगकर्ता को प्रमाणीकृत और अधिकृत होना है। एक्सएचआर/अजाक्स के माध्यम से अनुरोध किए जाते हैं। इसलिए यदि उपयोगकर्ता Devise प्रमाणीकृत नहीं है, तो पृष्ठ में साइन इन करने के बजाय ग्राहक को 401 प्रतिक्रिया भेजेंगी। लेकिन सीओआरएस हेडर सेट करने के लिए फ़िल्टर का उपयोग उस प्रतिक्रिया के लिए नहीं किया जाता है। इस प्रकार 401 प्रतिक्रिया ग्राहक को नहीं भेजी जाती है। मैं क्लाइंट में 401 प्रतिक्रिया पकड़ना और उपयोग करना चाहता हूं।
वर्तमान में मैं वसीयत प्रमाणीकरण तरीकों का उपयोग नहीं द्वारा एक समाधान का उपयोग कर रहा है, लेकिन एक कस्टम प्रमाणन टुकड़ा:
def authenticate_cors_user
if request.xhr? && !user_signed_in?
error = { :error => "You must be logged in." }
render params[:format].to_sym => error, :status => 401
end
end
यह ApplicationController
में एक before_filter
के रूप में भी स्थापित किया जाएगा। इस तरह सीओआरएस हेडर सेट करने के लिए फ़िल्टर ट्रिगर हो जाता है और सबकुछ ठीक काम करता है।
मैं वसीयत के डिफ़ॉल्ट व्यवहार को उपयोग करने के लिए पसंद करते हैं, लेकिन CORS हेडर 401 के जवाब में स्थापित किया जाना होगा। यह कैसे करना है? क्या मुझे इसके लिए warden कॉन्फ़िगर करना है?
सीओआरएस हेडर को अपनी प्रतिक्रिया बनाने के बजाय डेविस द्वारा उत्पन्न 401 प्रतिक्रिया के लिए कैसे सेट किया जा सकता है?
फिर भी मुझे लगता है कि के लिए एक समाधान नहीं है। कुछ और संदर्भ देने के लिए, मैं इस ब्लॉग का उपयोग कैसे कर रहा हूं इसके बारे में अपने ब्लॉग पोस्ट को देखें: http://nils-blum-oeste.net/cors-api-with-oauth2- प्रमाणीकरण-using-rails-and-angularjs –