Physicist, Programmer. What you eat, how you think, and most importantly what you have done become who you are. Who are you? and who will you be?
[IT/Programming]/HTML related
Referer 알아내기 in Server (Vert.x) and Client (HTML/javascript)
kipid2023. 11. 4. 13:44
반응형
# Referer 알아내기 in Server (Vert.x) and Client (HTML/javascript)
Client (방문객) 이 어느 경로를 통해 들어왔는지, 어느 검색어를 통해 어느 검색엔진을 통해 들어왔는지 등을 알아내려면 어떻게 해야할까?
Vert.x 랑 javascript 에서 쓰이는 referer/referrer 철자 (spelling) 가 다르네? ㅡㅂㅡ;;;
## PH
2023-11-04 : Update window.kipid to window.m.
2023-02-27 : First posting.
## TOC
## Referer in Vert.x server
참고 https://vertx.io/.
```[.linenums.lang-java]
import io.vertx.core.AbstractVerticle;
import io.vertx.core.http.HttpServerRequest;
import io.vertx.ext.web.Router;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
public class Recoeve extends AbstractVerticle {
public static final String host="recoeve.net";
public static final String ENCODING="UTF-8";
public static final String INVALID_ACCESS="INVALID ACCESS";
private static long numberOfClients;
static {
numberOfClients=0;
}
@Override
public void start() {
Router router=Router.router(vertx);
router.route().handler(ctx -> {
HttpServerRequest req=ctx.request();
System.out.println("\n\nA client has connected!: "+(++numberOfClients));
final String referer=req.headers().get("Referer");
if (referer!=null) {
try {
System.out.println("Referer: "+URLDecoder.decode(referer, "UTF-8"));
} catch (UnsupportedEncodingException e) {
System.out.println(e);
}
}
else {
System.out.println("Referer: null");
}
if (referer.substring(0,4).toLowerCase().equals("http")) {
int k=4;
if (referer.charAt(k)=='s'||referer.charAt(k)=='S') {
k++;
}
if (referer.startsWith("://",k)) {
k+=3;
int l=referer.indexOf('/',k);
String refererHost=null;
if (l==-1) {
refererHost=referer.substring(k);
}
else {
refererHost=referer.substring(k,l);
}
System.out.println("Referer Host: "+refererHost);
}
}
try {
System.out.println("Absolute URI: "+URLDecoder.decode(req.absoluteURI(), "UTF-8"));
} catch (UnsupportedEncodingException e) {
System.out.println(e);
}
req.response().putHeader("Content-Type","text/plain; charset=utf-8");
req.response().end(INVALID_ACCESS, ENCODING);
System.out.println(INVALID_ACCESS);
});
vertx.createHttpServer()
.requestHandler(router).listen(80);
} // public void start()
} // public class Recoeve extends AbstractVerticle
```/
```[.linenums]
// Log Example
A client has connected!: 208
Referer: https://recoeve.net/CDN/docuK-2.3.css
Referer Host: recoeve.net
Absolute URI: https://recoeve.net/CDN/cc.png
```/
## Document.referrer in HTML/Javascript
참고 MDN :: API - Document.referrer.
```[.linenums#pre-result]
```/
```[.linenums.lang-html#pre-code-js]
```/
## RRA