https://github.com/rbourgeat/webserv
This project is here to make you write your HTTP server. You will be able to test it with a real browser. HTTP is one of the most used protocols on the internet. Knowing its arcane will be useful, even if you won’t be working on a website.
https://github.com/rbourgeat/webserv
42 42born2code 42cursus 42paris 42projects 42school http
Last synced: 6 months ago
JSON representation
This project is here to make you write your HTTP server. You will be able to test it with a real browser. HTTP is one of the most used protocols on the internet. Knowing its arcane will be useful, even if you won’t be working on a website.
- Host: GitHub
- URL: https://github.com/rbourgeat/webserv
- Owner: rbourgeat
- Created: 2021-09-18T14:32:09.000Z (about 4 years ago)
- Default Branch: main
- Last Pushed: 2021-12-18T15:53:17.000Z (almost 4 years ago)
- Last Synced: 2025-02-14T13:41:38.666Z (8 months ago)
- Topics: 42, 42born2code, 42cursus, 42paris, 42projects, 42school, http
- Language: C++
- Homepage:
- Size: 13.9 MB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# webserv
This project is here to make you write your HTTP server. You will be able to test it with a real browser. HTTP is one of the most used protocols on the internet. Knowing its arcane will be useful, even if you won’t be working on a website.**Tutorials**
- [Building a simple web serveur in c++](https://ncona.com/2019/04/building-a-simple-server-with-cpp/)
- [C++ Web Programming: CGI program](https://www.tutorialspoint.com/cplusplus/cpp_web_programming.htm)
- [HTTP](https://developer.mozilla.org/en-US/docs/Web/HTTP)
- [Build a simple HTTP server from scratch](https://medium.com/from-the-scratch/http-server-what-do-you-need-to-know-to-build-a-simple-http-server-from-scratch-d1ef8945e4fa)
- [Manage a socket flow of events using poll()](https://www.ibm.com/docs/en/i/7.2?topic=designs-using-poll-instead-select)
- [C++ programming applied to network](https://bousk.developpez.com/cours/reseau-c++/) (in French)
- [Network programming](https://beej.us/guide/bgnet/)**HTTP documentation**
- [RFC 2616: HTTP 1.1 protocol](https://datatracker.ietf.org/doc/html/rfc2616)
- [RFC 7230: HTTP/1.1 Message Syntax and Routing](https://www.rfc-editor.org/rfc/pdfrfc/rfc7230.txt.pdf)
- [List of HTTP status codes](https://en.wikipedia.org/wiki/List_of_HTTP_status_codes)
- [Content-Type](https://docs.microsoft.com/en-us/previous-versions/exchange-server/exchange-10/ms526508(v=exchg.10)?redirectedfrom=MSDN)
- [Content-Type Stack List](https://stackoverflow.com/questions/23714383/what-are-all-the-possible-values-for-http-content-type-header)
- [Content-Type Full List](https://www.iana.org/assignments/media-types/media-types.xhtml)
- [Tres bon site aussi !](https://developer.mozilla.org/fr/docs/Web/HTTP/Status/)
- [HTTP messages](https://developer.mozilla.org/en-US/docs/Web/HTTP/Messages)
- [Redirections](https://developer.mozilla.org/fr/docs/Web/HTTP/Redirections)**Useful RFCs**
- [RFC editor](https://www.rfc-editor.org/retrieve/): official source for RFCs on the World Wide Web.
- [RFC 2396: Uniform Resource Identifiers (URI): Generic Syntax](https://datatracker.ietf.org/doc/html/rfc2396): useful definitions of URI, port and host**Useful C functions**
- [socket](https://man7.org/linux/man-pages/man2/socket.2.html): creates an endpoint for communication and returns a file descriptor that refers to that endpoint.
- [listen](https://man7.org/linux/man-pages/man2/listen.2.html): listens for connections on a socket.
- [poll](https://man7.org/linux/man-pages/man2/poll.2.html): waits for one of a set of file descriptors to become ready to perform I/O.
- [accept](https://man7.org/linux/man-pages/man2/accept.2.html): accepts a connection on a socket.**CGI Doc**
- [RFC 3875: CGI](https://www.rfc-editor.org/rfc/rfc3875.pdf)
- [Best CGI Exemple](https://www.fi.muni.cz/usr/jkucera/tic/tic0305.html): Programmation CGI in C++.
- [CGI Environmnent Variables](https://fr.wikipedia.org/wiki/Variables_d%27environnement_CGI)
- [Good CGI Howto (and cookies)](http://www.purplepixie.org/cgi/howto.php)
- [Some exemples](https://pub.phyks.me/sdz/sdz/ecrivez-votre-site-web-en-c-avec-la-cgi.html)**Tools**
- [Super Mega Site pour tester les Headers !](https://reqbin.com/)
- [cURL "--resolve"; curl -H "Host: ..."](https://sodocumentation.net/curl/topic/10565/name-resolve-curl-tricks) (for testing different server names).**Server model: nginx documentation**
- [Inside Nginx architecture](https://www.nginx.com/blog/inside-nginx-how-we-designed-for-performance-scale/)
- [Understanding Nginx Server and Location Block Selection Algorithms](https://www.digitalocean.com/community/tutorials/understanding-nginx-server-and-location-block-selection-algorithms)