<<

NAME

ProductOpener::HTTP - utility functions around http (handling headers, cookies, redirect, etc.)

SYNOPSIS

ProductOpener::Web consists of functions used only in OpenFoodFacts website for different tasks.

DESCRIPTION

The module implements http utilities to use in different part of the code.

FIXME: a lot of functions in Display.pm should be moved here.

FUNCTIONS

get_cors_headers($allow_credentials = 0, $sub_domain_only = 0)

We handle CORS headers from Perl code, NGINX should not interfere. So this is the central place for it.

Some parts needs to be more strict than others (eg. auth).

Parameters

$allow_credentials - boolean

Whether we should add the Access-Control-Allow-Credential header, should be used with caution. We will effectively put the headers only if subdomains matches.

We need to send the header Access-Control-Allow-Credentials=true so that websites such has hunger.openfoodfacts.org that send a query to world.openfoodfacts.org/cgi/auth.pl can read the resulting response.

$sub_domain_only - boolean

If true tells to restrict Access to main domain, that is domain.tld (eg. openfoodfacts.org) It defaults to False, but as a precaution, setting $allow_credentials to True turns it to True, if allow-credentials is given.

returns

Reference to a Hashmap with headers.

write_cors_headers($allow_credentials = 0, $sub_domain_only = 0)

This function write cors_headers in response.

see get_cors_headers to see how they are computed and parameters

set_http_response_header($request_ref, $header_name, $header_value)

This function sets a header in the response.

Parameters

$request_ref - Reference to the request object.

$header_name - Name of the header.

$header_value - Value of the header.

write_http_response_headers($request_ref)

This function writes the headers in the response.

Parameters

$request_ref - Reference to the request object.

redirect_to_url($request_ref, $status_code, $redirect_url)

This function instructs mod_perl to print redirect HTTP header (Location) and to terminate the request immediately. The mod_perl process is not terminated and will continue to serve future requests.

Arguments

Request object $request_ref

The request object may contain a cookie.

Status code $status_code

e.g. 302 for a temporary redirect

Redirect url $redirect_url

single_param ($param_name)

CGI.pm param() function returns a list when called in a list context (e.g. when param() is an argument of a function, or the value of a field in a hash). This causes issues for function signatures that expect a scalar, and that may get passed an empty list if the parameter is not set.

So instead of calling CGI.pm param() directly, we call single_param() to prefix it with scalar.

Arguments

CGI parameter name $param_name

Return value

A scalar value for the parameter, or undef if the parameter is not defined.

request_param ($request_ref, $param_name)

Return a request parameter. The parameter can be passed in the query string, as a POST multipart form data parameter, or in a POST JSON body

Arguments

Parameter name $param_name

Return value

A scalar value for the parameter, or undef if the parameter is not defined.

<<