একটি অনুরোধের জন্য HTTP শিরোনাম সেট করুন


159

আমার অ্যাপটিতে আমার একটি বিশেষ অনুরোধ রয়েছে যার বুনিয়াদি প্রমাণীকরণ প্রয়োজন, সুতরাং সেই অনুরোধের জন্য আমাকে অনুমোদন শিরোনামটি সেট করা দরকার। আমি HTTP অনুরোধ শিরোনাম সেট করার বিষয়ে পড়েছি , তবে আমি যা বলতে পারি তা থেকে, এই পদ্ধতির সমস্ত অনুরোধের জন্য এটি শিরোনামটি সেট করবে। আমার কোডে আমার এরকম কিছু রয়েছে:

$http.defaults.headers.post.Authorization = "Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==";

তবে আমি চাই না যে আমার পোস্টের প্রত্যেকের অনুরোধ এই হেডারটি প্রেরণ করবে। কেবলমাত্র আমার অনুরোধের জন্য শিরোনামটি পাঠানোর কোনও উপায় আছে? বা আমার অনুরোধের পরে কি আমাকে এটি সরিয়ে ফেলতে হবে?


উত্তর:


320

$httpপ্রতি কল কল শিরোলেখগুলির জন্য কনফিগার করা অবজেক্টে আপনি একটি শিরোনাম পরামিতি পাঠিয়েছেন :

$http({method: 'GET', url: 'www.google.com/someapi', headers: {
    'Authorization': 'Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ=='}
});

বা শর্টকাট পদ্ধতি সহ:

$http.get('www.google.com/someapi', {
    headers: {'Authorization': 'Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ=='}
});

বৈধ প্যারামিটারগুলির তালিকা $ http পরিষেবা ডকুমেন্টেশনে উপলব্ধ।


1
আমার ধারণা, ডকটির দিকে আমার আরও একটু নজর দেওয়া উচিত ছিল ... আমি কেবল শর্টকাট পদ্ধতি ব্যবহার করার চেষ্টা করছিলাম। এটি দুর্দান্ত কাজ করে। ধন্যবাদ।
dnc253

17
@ dnc253 এটি শর্টকাট পদ্ধতিতেও কাজ করে। কোডটি হবে$http.get('www.google.com/someapi', {headers: {'Authorization': 'Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ=='}});
Yunchi

1
আপনার জন্য এই শিরোলেখটি স্বয়ংক্রিয়ভাবে যুক্ত করার জন্য কী $ http ("ইনজেকশনযোগ্যতা" বজায় রাখা এবং এটি ডিফল্ট শিরোনাম সংগ্রহের জন্য প্রয়োগ না করার) জন্য কোনও উপায় আছে? আপনার করা প্রতিটি সুরক্ষিত কলের জন্য সর্বদা শিরোনাম যুক্ত করতে এক ধরণের অপ্রয়োজনীয় মনে হয়।
nokturnal

31
আমার জন্য কাজ করে না। আমি এইভাবে যুক্ত শিরোনামগুলির মধ্যে কোনওই আসল অনুরোধে যুক্ত হয় না।
এমসিভি

4
আমি যখনই শিরোনামগুলি সেট করার চেষ্টা করি, তখন আমার অনুরোধটি OPTIONঅনুরোধ হিসাবে চলে যায় , ফলস্বরূপ আমার শেষ পয়েন্টটি একটি 404 NOT FOUNDধারণা দেয় যা বোঝায়: এটি কেবল একটি জানে GET /someResourceনাOPTIONS /someResource
ম্যাথিউস ফিলিপ

19

এটি চেষ্টা করুন, সম্ভবত এটি কাজ করে;)

.factory('authInterceptor', function($location, $q, $window) {


return {
    request: function(config) {
      config.headers = config.headers || {};

      config.headers.Authorization = 'xxxx-xxxx';

      return config;
    }
  };
})

.config(function($httpProvider) {
  $httpProvider.interceptors.push('authInterceptor');
})

এবং আপনার পিছনের শেষটিও কাজ করে তা নিশ্চিত করুন, এটি চেষ্টা করে দেখুন। আমি RESTful CodeIgniter ব্যবহার করছি।

class App extends REST_Controller {
    var $authorization = null;

    public function __construct()
    {
        parent::__construct();
        header('Access-Control-Allow-Origin: *');
        header("Access-Control-Allow-Headers: X-API-KEY, Origin, X-Requested-With, Content-Type, Accept, Access-Control-Request-Method, Authorization");
        header("Access-Control-Allow-Methods: GET, POST, OPTIONS, PUT, DELETE");
        if ( "OPTIONS" === $_SERVER['REQUEST_METHOD'] ) {
            die();
        }

        if(!$this->input->get_request_header('Authorization')){
            $this->response(null, 400);    
        }

        $this->authorization = $this->input->get_request_header('Authorization');
    }

}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.