The difference between the following items and how the search engines treat them – 301 response code, 302 response code, canonical URL tag and meta refresh.
A 301 redirect tells browsers and search engines that a page has been permanently redirected to a new URL. A 302 redirect indicates a temporary redirection that will change again or revert back in the future. Search engines such as Google and Bing interpret a 301 redirect by passing the link equity and ranking metrics from the 301’d URL to the target page. 302 redirects do not always receive this treatment (though exceptions exist) and may show in the search results with the original URL/snippet even after the 302 redirect is in place.
The Canonical URL tag is a < link rel> item in the header of a document that serves as a suggestion to search engines, indicating the “original” or “canonical” version of that page’s content. It is intended to tell engines which URL is suitable for indexing when multiple pages contain the same or very similar content.
The meta refresh is a directive in the header of a document indicating that, after a certain quantity of time is passed, the browser should redirect to a new location (or reload the page). Search engines appear to treat most short meta refreshes (a few seconds in length) as permanent redirects, passing the link equity and ranking metrics to the target page (they also claim to do this 100% of the time for meta refreshes marked with “0” seconds of delay). Longer meta refreshes may be indexed as normal.