Class FaradayMiddleware::FollowRedirects
In: lib/faraday_middleware/response/follow_redirects.rb
Parent: Faraday::Middleware

Public: Follow HTTP 301, 302, 303, 307, and 308 redirects.

For HTTP 301, 302, and 303, the original GET, POST, PUT, DELETE, or PATCH request gets converted into a GET. With `:standards_compliant => true`, however, the HTTP method after 301/302 remains unchanged. This allows you to opt into HTTP/1.1 compliance and act unlike the major web browsers.

This middleware currently only works with synchronous requests; i.e. it doesn‘t support parallelism.

If you wish to persist cookies across redirects, you could use the faraday-cookie_jar gem:

  Faraday.new(:url => url) do |faraday|
    faraday.use FaradayMiddleware::FollowRedirects
    faraday.use :cookie_jar
    faraday.adapter Faraday.default_adapter
  end

Methods

call   new  

Constants

ALLOWED_METHODS = Set.new [:head, :options, :get, :post, :put, :patch, :delete]   HTTP methods for which 30x redirects can be followed
REDIRECT_CODES = Set.new [301, 302, 303, 307, 308]   HTTP redirect status codes that this middleware implements
ENV_TO_CLEAR = Set.new [:status, :response, :response_headers]   Keys in env hash which will get cleared between requests
FOLLOW_LIMIT = 3   Default value for max redirects followed
URI_UNSAFE = /[^\-_.!~*'()a-zA-Z\d;\/?:@&=+$,\[\]%]/   Regex that matches characters that need to be escaped in URLs, sans the "%" character which we assume already represents an escaped sequence.
AUTH_HEADER = 'Authorization'.freeze

Public Class methods

Public: Initialize the middleware.

options - An options Hash (default: {}):

    :limit                      - A Numeric redirect limit (default: 3)
    :standards_compliant        - A Boolean indicating whether to respect
                                 the HTTP spec when following 301/302
                                 (default: false)
    :callback                   - A callable that will be called on redirects
                                 with the old and new envs
    :cookies                    - An Array of Strings (e.g.
                                 ['cookie1', 'cookie2']) to choose
                                 cookies to be kept, or :all to keep
                                 all cookies (default: []).
    :clear_authorization_header - A Boolean indicating whether the request
                                 Authorization header should be cleared on
                                 redirects (default: true)

Public Instance methods

[Validate]