mirror of
https://github.com/kataras/iris.git
synced 2025-01-23 10:41:03 +01:00
add HTTP Referer section
parent
02749e1753
commit
2c0d9cd365
83
HTTP-referer.md
Normal file
83
HTTP-referer.md
Normal file
|
@ -0,0 +1,83 @@
|
||||||
|
The HTTP referer is an optional HTTP header field that identifies the address of the webpage (i.e. the URI or IRI) which is linked to the resource being requested. By checking the referrer, the new webpage can see where the request originated.
|
||||||
|
|
||||||
|
Read more at [wikipedia](https://en.wikipedia.org/wiki/HTTP_referer)
|
||||||
|
|
||||||
|
--------
|
||||||
|
|
||||||
|
Iris uses the [Shopify's goreferrer](https://github.com/Shopify/goreferrer/pull/27) package to expose the `Context.GetReferrer()` method.
|
||||||
|
|
||||||
|
The `GetReferrer` Context's method extracts and returns the information from the `"Referer"` header as specified in https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referrer-Policy or by the URL `query parameter "referer"`.
|
||||||
|
|
||||||
|
```go
|
||||||
|
GetReferrer() Referrer
|
||||||
|
```
|
||||||
|
|
||||||
|
Which `Referrer` looks like that:
|
||||||
|
|
||||||
|
```go
|
||||||
|
type (
|
||||||
|
Referrer struct {
|
||||||
|
Type ReferrerType
|
||||||
|
Label string
|
||||||
|
URL string
|
||||||
|
Subdomain string
|
||||||
|
Domain string
|
||||||
|
Tld string
|
||||||
|
Path string
|
||||||
|
Query string
|
||||||
|
GoogleType ReferrerGoogleSearchType
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
The `ReferrerType` is the enum for a Referrer.Type value (indirect, direct, email, search, social). The available types are:
|
||||||
|
|
||||||
|
```go
|
||||||
|
ReferrerInvalid
|
||||||
|
ReferrerIndirect
|
||||||
|
ReferrerDirect
|
||||||
|
ReferrerEmail
|
||||||
|
ReferrerSearch
|
||||||
|
ReferrerSocial
|
||||||
|
```
|
||||||
|
|
||||||
|
The `GoogleType` can be one of those:
|
||||||
|
|
||||||
|
```go
|
||||||
|
ReferrerNotGoogleSearch
|
||||||
|
ReferrerGoogleOrganicSearch
|
||||||
|
ReferrerGoogleAdwords
|
||||||
|
```
|
||||||
|
|
||||||
|
## Example
|
||||||
|
|
||||||
|
```go
|
||||||
|
package main
|
||||||
|
|
||||||
|
import "github.com/kataras/iris"
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
app := iris.New()
|
||||||
|
|
||||||
|
app.Get("/", func(ctx iris.Context) {
|
||||||
|
r := ctx.GetReferrer()
|
||||||
|
switch r.Type {
|
||||||
|
case iris.ReferrerSearch:
|
||||||
|
ctx.Writef("Search %s: %s\n", r.Label, r.Query)
|
||||||
|
ctx.Writef("Google: %s\n", r.GoogleType)
|
||||||
|
case iris.ReferrerSocial:
|
||||||
|
ctx.Writef("Social %s\n", r.Label)
|
||||||
|
case iris.ReferrerIndirect:
|
||||||
|
ctx.Writef("Indirect: %s\n", r.URL)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
app.Run(iris.Addr(":8080"))
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
How to `curl`:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
curl http://localhost:8080?referer=https://twitter.com/Xinterio/status/1023566830974251008
|
||||||
|
curl http://localhost:8080?referer=https://www.google.com/search?q=Top+6+golang+web+frameworks&oq=Top+6+golang+web+frameworks
|
||||||
|
```
|
1
Home.md
1
Home.md
|
@ -19,6 +19,7 @@ This wiki is the main source of documentation for **developers** working with (o
|
||||||
* [[Wrap the Router|Routing-wrap-the-router]]
|
* [[Wrap the Router|Routing-wrap-the-router]]
|
||||||
* [[Override Context|Routing-override-context]]
|
* [[Override Context|Routing-override-context]]
|
||||||
* [[API Versioning]]
|
* [[API Versioning]]
|
||||||
|
* [[HTTP Referer]]
|
||||||
* [[Request Authentication]]
|
* [[Request Authentication]]
|
||||||
* [[URL Query Parameters]]
|
* [[URL Query Parameters]]
|
||||||
* [[Forms]]
|
* [[Forms]]
|
||||||
|
|
|
@ -14,6 +14,7 @@
|
||||||
* [[Wrap the Router|Routing-wrap-the-router]]
|
* [[Wrap the Router|Routing-wrap-the-router]]
|
||||||
* [[Override Context|Routing-override-context]]
|
* [[Override Context|Routing-override-context]]
|
||||||
* [[API Versioning]]
|
* [[API Versioning]]
|
||||||
|
* [[HTTP Referer]]
|
||||||
* [[Request Authentication]]
|
* [[Request Authentication]]
|
||||||
* [[URL Query Parameters]]
|
* [[URL Query Parameters]]
|
||||||
* [[Forms]]
|
* [[Forms]]
|
||||||
|
|
Loading…
Reference in New Issue
Block a user