की आवश्यकता है यह प्रश्न डुप्लिकेट की तरह लग सकता है, लेकिन मैंने स्टैक ओवरफ्लो पर अन्य समान प्रश्नों में सभी चरणों का प्रयास किया है, लेकिन उनमें से कोई भी काम नहीं करता है। मैं आयनिक का उपयोग कर एक रेल एपीआई से कनेक्ट करने की कोशिश कर रहा हूं।पूर्ण 401 अनधिकृत अनुरोध को रीडायरेक्ट अनुरोधों के लिए अनुमति नहीं दी गई है, जिसके लिए प्रीफलाइट
मेरा सेटअप रेल 4, प्रमाणीकरण के लिए देवता, टोकन आधारित API अनुरोधों और मोबाइल ऐप के लिए आयनिक के लिए simple_token_authentication मणि है।
मैं डेयज़ सत्र नियंत्रक एपीआई के लिए सही उपयोगकर्ता नाम और पासवर्ड के साथ लॉगिन अनुरोध पास करके आयनिक से लॉगिन करने में सक्षम हूं और devise api के माध्यम से सफल लॉगिन के बाद टोकन प्राप्त कर सकता हूं।
उसके बाद, जब मैं एक प्राप्त क्वेरी पहुँच टोकन का उपयोग कर के साथ किसी भी नियंत्रक के सूचकांक तक पहुँचने का प्रयास: http://localhost:3002/api/categories?token=1098ccee839952491a4 या http://localhost:3002/api/employers?token=1098ccee839952491a4
प्रतिक्रिया वसीयत की एक sign_in पेज है। में रेल प्रवेश करें, तो यह
Started GET "/api/categories?token=1098ccee839952491a43" for ::1 at 2016-06-17 17:45:55 +0530
Processing by Api::CategoriesController#index as HTML
Parameters: {"token"=>"1098ccee839952491a43"}
User Load (0.7ms) SELECT `users`.* FROM `users` WHERE `users`.`authentication_token` = '1098ccee839952491a43'
Completed 401 Unauthorized in 3ms (ActiveRecord: 0.7ms)
Started GET "https://stackoverflow.com/users/sign_in" for ::1 at 2016-06-17 17:45:55 +0530
Processing by Devise::SessionsController#new as HTML
Rendered devise/shared/_links.html.erb (6.5ms)
Rendered devise/sessions/new.html.erb within layouts/login (78.3ms)
Completed 200 OK in 3850ms (Views: 3847.1ms | ActiveRecord: 0.0ms)
मुझे पता है मैं पार डेटाबेस में टोकन जाँच की है यकीन है कि के लिए टोकन सही है पता चलता है। इसके अलावा, मैंने रैक-कॉर्स मणि शामिल किया है और इसके लिए क्रॉस डोमेन अनुरोध के लिए किसी मूल की अनुमति देने के लिए कॉन्फ़िगर किया गया है।
मेरी application.rb में CORS प्रविष्टि इस
class Application < Rails::Application
config.active_record.raise_in_transactional_callbacks = true
config.middleware.insert_before 0, "Rack::Cors" do
allow do
origins '*'
resource '*', :headers => :any, :methods => [:get, :post, :options]
end
end
end
तरह लग रहा है इस तरह आयनिक दिखता में controllers.js में GET अनुरोध: -
$http({
method: 'GET',
headers:
{
'X-XSRF-TOKEN': window.localStorage.getItem("token") ,
},
url: config.apiUrl+"/categories?token="+window.localStorage.getItem("token") ,
}).then(function successCallback(response) {
console.log(response);
}, function errorCallback(response) {
$ionicPopup.alert({
title: 'Alert',
template: response.data.message,
});
});
अनुरोध के बाद शुरू किया जाता है, क्रोम डेवलपर कंसोल निम्नलिखित संदेश दिखाता है
XMLHttpRequest लोड नहीं कर सकता। अनुरोध को 'http://localhost:3002/users/sign_in' पर रीडायरेक्ट किया गया था, जो को क्रॉस-मूल अनुरोधों के लिए अनुमति नहीं है, जिसके लिए प्रीफलाइट की आवश्यकता होती है।
प्रतिक्रिया हेडर मैं सर्वर से प्राप्त
जनरल
Request URL:http://localhost:3002/api/categories?token=1098ccee839952491a43
Request Method:GET
Status Code:302 Found
Remote Address:[::1]:3002
प्रतिक्रिया हेडर
view source
Access-Control-Allow-Credentials:true
Access-Control-Allow-Methods:GET, POST, OPTIONS
Access-Control-Allow-Origin:http://localhost:8100
Access-Control-Expose-Headers:
Access-Control-Max-Age:1728000
Cache-Control:no-cache
Connection:Keep-Alive
Content-Length:101
Content-Type:text/html; charset=utf-8
Date:Fri, 17 Jun 2016 12:26:13 GMT
Location:http://localhost:3002/users/sign_in
Server:WEBrick/1.3.1 (Ruby/2.2.1/2015-02-26)
Set-Cookie:_backend_session=c05LRTgzdXNVdGNFeHcwaDNtRDkxZ1RBbXFNaDFNbE1zMTV6OGhFZG1VODdON2k4ODN0ZTg3YXo5OU5hOTZkcUNmR3VTaGVRQzBOUElCNnMrODhnemVCbUhQbUs2azNHdmVnbFpoL2JiRDA5S1I4NCtsVWNhOEpqeDdoYWxXR3hHNDg5RzNRcUlpcDZ4QWswY2NmUlpYbUkvTnpaVEViNXh6ZExCZkNyTXA0allMcW1RVGg1MjRLVnpEbzlSSVk4dGRUSTNsTUZFNEFOcVJxdm1hWXNaSFEzdnlSN01DZ2FTdEJYUTdUUGxucU44cFBMbDZ6RXlhVUx2ZHArWlNCVWgyTWs2emRrSXNGbTQ3ZVVQL0NCR0E9PS0tbmFzajFXZnZnd25oUkRFRjhxSy81QT09--281b2bd6413653ca006abc80f13329d6bf3ad0f5; path=/; HttpOnly
Vary:Origin
X-Content-Type-Options:nosniff
X-Frame-Options:SAMEORIGIN
X-Request-Id:3097ec28-6d55-4c70-90c9-de221b4321e3
X-Runtime:0.021444
X-Xss-Protection:1; mode=block
अनुरोध हेडर है
view source
Accept:application/json, text/plain, */*
Accept-Encoding:gzip, deflate, sdch
Accept-Language:en-US,en;q=0.8
Connection:keep-alive
Host:localhost:3002
Origin:http://localhost:8100
Referer:http://localhost:8100/
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.84 Safari/537.36
X-XSRF-TOKEN:1098ccee839952491a43
आप अनुरोध हेडर सेट की जगह ले सकता API सर्वर करने के लिए कुकीज़ भेज देंगे: "प्रवेश -कंट्रोल-अनुमति-उत्पत्ति: http: // localhost: 8100 "से" एक्सेस-कंट्रोल-अनुमति-उत्पत्ति: * "और फिर कोशिश करें – Naitik
आप क्वेरी पैरा के रूप में एक्स-एक्सएसआरएफ-टोकन हेडर और टोकन दोनों का उपयोग क्यों करते हैं? स्पष्ट रूप से यह एक कॉरस मुद्दा नहीं है, प्रमाणीकरण के साथ आपके नियंत्रक में कुछ गड़बड़ है। अगर यह सीओआरएस समस्या थी तो आपको जीईटी अनुरोध बिल्कुल नहीं दिखाई देगा। क्या आप अपना कोड 'एपी :: श्रेणियां नियंत्रक' – Chris
में साझा कर सकते हैं http://stackoverflow.com/questions/34949492/cors-request-with-preflight-and-redirect-disallowed-workarounds/39728229#39728229 पर विवरण के लिए विवरण देखें इस के आसपास कैसे काम करें। जैसा कि ध्यान दिया गया है, रीडायरेक्ट पर यह प्रतिबंध अब spec में नहीं है लेकिन ब्राउज़र को spec परिवर्तन से मेल खाने के लिए अपने कार्यान्वयन को अपडेट करने की आवश्यकता है। – sideshowbarker