aboutsummaryrefslogtreecommitdiff
path: root/files/id/web/http
diff options
context:
space:
mode:
Diffstat (limited to 'files/id/web/http')
-rw-r--r--files/id/web/http/basics_of_http/index.html51
-rw-r--r--files/id/web/http/gambaran/index.html173
-rw-r--r--files/id/web/http/index.html81
-rw-r--r--files/id/web/http/methods/get/index.html73
-rw-r--r--files/id/web/http/methods/index.html76
-rw-r--r--files/id/web/http/proxy_servers_and_tunneling/index.html100
-rw-r--r--files/id/web/http/proxy_servers_and_tunneling/proxy_auto-configuration_(pac)_file/index.html727
-rw-r--r--files/id/web/http/status/100/index.html46
-rw-r--r--files/id/web/http/status/200/index.html50
-rw-r--r--files/id/web/http/status/400/index.html39
-rw-r--r--files/id/web/http/status/403/index.html56
-rw-r--r--files/id/web/http/status/404/index.html63
-rw-r--r--files/id/web/http/status/405/index.html44
-rw-r--r--files/id/web/http/status/410/index.html54
-rw-r--r--files/id/web/http/status/500/index.html38
-rw-r--r--files/id/web/http/status/index.html141
16 files changed, 1812 insertions, 0 deletions
diff --git a/files/id/web/http/basics_of_http/index.html b/files/id/web/http/basics_of_http/index.html
new file mode 100644
index 0000000000..a00d7fe410
--- /dev/null
+++ b/files/id/web/http/basics_of_http/index.html
@@ -0,0 +1,51 @@
+---
+title: Basics of HTTP
+slug: Web/HTTP/Basics_of_HTTP
+tags:
+ - Guide
+ - HTTP
+ - NeedsTranslation
+ - Overview
+ - TopicStub
+translation_of: Web/HTTP/Basics_of_HTTP
+---
+<div>{{HTTPSidebar}}</div>
+
+<p>HTTP adalah sebuah protokol yang dapat diperluas. HTTP bergantung pada beberapa konsep dasar seperti the notion of resources and URIs, a simple structure of messages, and a client-server structure for the communication flow. On top of these basic concepts, numerous extensions have appeared over the years, adding new functionality and new semantics by creating new HTTP methods or headers.</p>
+
+<h2 id="Articles">Articles</h2>
+
+<dl>
+ <dt><a href="/en-US/docs/Web/HTTP/Overview">Overview of HTTP</a></dt>
+ <dd>Describes what HTTP is and its role in the Web architecture, its position in the protocol stack.</dd>
+ <dt><a href="/en-US/docs/Web/HTTP/Basics_of_HTTP/Evolution_of_HTTP">Evolution of HTTP</a></dt>
+ <dd>HTTP was created in the early 1990s and has been extended several times. This article goes through its history and describes HTTP/0.9, HTTP/1.0, HTTP/1.1, and the modern HTTP/2 as well as minor novelties introduced over the years.</dd>
+ <dt><a href="/en-US/docs/Web/HTTP/Basics_of_HTTP/Negotiating_an_HTTP_version">Negotiating an HTTP version</a></dt>
+ <dd>Explains how a client and a server can negotiate a specific HTTP version and eventually upgrade the protocol version used.</dd>
+ <dt><a href="/en-US/docs/Web/HTTP/Resources_and_URIs">Resources and URIs</a></dt>
+ <dd>A brief introduction of the notion of resources, identifiers, and locations on the Web.</dd>
+ <dt><a href="/en-US/docs/Web/HTTP/Basics_of_HTTP/Identifying_resources_on_the_Web">Identifying resources on the Web</a></dt>
+ <dd>Describes how Web resources are referenced and how to locate them.</dd>
+ <dt><a href="/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URIs">Data URIs</a></dt>
+ <dd>A specific kind of URIs that directly embeds the resource it represents. Data URIs are very convenient, but have some caveats.</dd>
+ <dt><a href="/en-US/docs/Web/HTTP/Basics_of_HTTP/Resource_URLs">Resource URLs</a> {{Non-standard_Inline}}</dt>
+ <dd>Resource URLs, URLs prefixed with the <code>resource:</code> scheme, are used by Firefox and Firefox browser extensions to load resources internally, but some of the information is available to sites the browser connects to as well.</dd>
+ <dt>Separating identity and location of a resource: the Alt-Svc HTTP header</dt>
+ <dd>Most of the time identity and location of a Web resource are shared, this can be changed with the {{HTTPHeader("Alt-Svc")}} header.</dd>
+ <dt><a href="/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types">MIME types</a></dt>
+ <dd>Since HTTP/1.0, different types of content can be transmitted. This article explains how this is done using the {{HTTPHeader("Content-Type")}} header and the MIME standard.</dd>
+ <dt><a href="/en-US/docs/Web/HTTP/Basics_of_HTTP/Choosing_between_www_and_non-www_URLs">Choosing between www and non-www URLs</a></dt>
+ <dd>Advice on using a www-prefixed domain or not, this article explains the consequences of the choice as well as how to make it.</dd>
+ <dt><a href="/en-US/docs/Web/HTTP/Flow_of_an_HTTP_session">Flow of an HTTP session</a></dt>
+ <dd>This fundamental article describes a typical HTTP session: what happens under the hood when you click on a link in your browser…</dd>
+ <dt><a href="/en-US/docs/Web/HTTP/Messages">HTTP Messages</a></dt>
+ <dd>HTTP Messages transmitted during requests or responses have a very clear structure; this introductory article describes this structure, its purpose and its possibilities.</dd>
+ <dt><a href="/en-US/docs/Web/HTTP/Frame and message structure in HTTP_2">Frame and message structure in HTTP/2</a></dt>
+ <dd>HTTP/2 encapsulates and represents HTTP/1.x messages in a binary frame. This article explains the frame structure, its purpose and the way it is encoded.</dd>
+ <dt><a href="/en-US/docs/Web/HTTP/Connection_management_in_HTTP_1.x">Connection management in HTTP/1.x</a></dt>
+ <dd>HTTP/1.1 was the first version of HTTP to support persistent connection and pipelining. This article explains these two concepts.</dd>
+ <dt><a href="/en-US/docs/Web/HTTP/Connection_management_in_HTTP_2">Connection management in HTTP/2</a></dt>
+ <dd>HTTP/2 completely revisited how connections are created and maintained: this article explains how HTTP frames allow multiplexing and solve the 'head-of-line' blocking problem of former HTTP versions.</dd>
+ <dt><a href="/en-US/docs/Web/HTTP/Content_negotiation">Content Negotiation</a></dt>
+ <dd>HTTP introduces a set of headers, starting with <code>Accept-</code> as a way for a browser to announce the format, language, or encoding it prefers. This article explains how this advertisement happens, how the server is expected to react and how it will choose the most adequate response.</dd>
+</dl>
diff --git a/files/id/web/http/gambaran/index.html b/files/id/web/http/gambaran/index.html
new file mode 100644
index 0000000000..b06d42ac23
--- /dev/null
+++ b/files/id/web/http/gambaran/index.html
@@ -0,0 +1,173 @@
+---
+title: Gambaran HTTP
+slug: Web/HTTP/Gambaran
+translation_of: Web/HTTP/Overview
+---
+<div>{{HTTPSidebar}}</div>
+
+<p class="summary"><span class="seoSummary"><strong>HTTP</strong> adalah</span> sebuah {{Glossary("protocol")}} yang memungkinkan pengambilan sumber daya, seperti dokumen HTML. Ini adalah dasar dari pertukaran data apa pun di Web dan itu adalah protokol client-server, yang berarti permintaan diprakarsai oleh penerima (Client), biasanya browser Web. Dokumen lengkap direkonstruksi dari berbagai sub-dokumen yang diambil, misalnya teks, deskripsi tata letak, gambar, video, skrip, dan banyak lagi.</p>
+
+<p><img alt="A Web document is the composition of different resources" src="https://mdn.mozillademos.org/files/13677/Fetching_a_page.png" style="height: 319px; width: 545px;"></p>
+
+<p>Client dan Server berkomunikasi dengan bertukar pesan individual (sebagai lawan aliran data). Pesan yang dikirim oleh Client, biasanya browser Web, disebut permintaan (<em>requests</em>) dan pesan yang dikirim oleh server sebagai jawaban disebut respons (<em>responses</em>)</p>
+
+<p><img alt="HTTP as an application layer protocol, on top of TCP (transport layer) and IP (network layer) and below the presentation layer." src="https://mdn.mozillademos.org/files/13673/HTTP%20&amp;%20layers.png" style="float: left; height: 299px; padding-bottom: 15px; padding-right: 20px; width: 418px;">Dirancang pada awal 1990-an, HTTP adalah protokol yang dapat diperluas, yang telah berevolusi dari waktu ke waktu. Ini adalah lapisan aplikasi protokol yang dikirim melalui {{Glossary("TCP")}}, atau melalui koneksi TCP yang terenkripsi {{Glossary("TLS")}} meskipun begitu semua transportasi protokol yang terpercaya secara teori juga dapat digunakan. Karena sifatnya yang dapat diperluas, protokol ini digunakan tidak hanya untuk mengambil dokumen hiperteks, tetapi juga gambar dan video atau untuk memposting konten ke server, sama seperti hasil sebuah form HTML. HTTP juga dapat digunakan untuk mengambil bagian dokumen untuk memperbarui halaman Web sesuai permintaan.</p>
+
+<h2 id="Components_of_HTTP-based_systems">Components of HTTP-based systems</h2>
+
+<p>HTTP is a client-server protocol: requests are sent by one entity, the user-agent (or a proxy on behalf of it). Most of the time the user-agent is a Web browser, but it can be anything, for example a robot that crawls the Web to populate and maintain a search engine index.</p>
+
+<p>Each individual request is sent to a server, which handles it and provides an answer, called the <em>response</em>. Between the client and the server there are numerous entities, collectively called {{Glossary("Proxy_server", "proxies")}}, which perform different operations and act as gateways or {{Glossary("Cache", "caches")}}, for example.</p>
+
+<p><img alt="Client server chain" src="https://mdn.mozillademos.org/files/13679/Client-server-chain.png"></p>
+
+<p>In reality, there are more computers between a browser and the server handling the request: there are routers, modems, and more. Thanks to the layered design of the Web, these are hidden in the network and transport layers. HTTP is on top, at the application layer. Although important to diagnose network problems, the underlying layers are mostly irrelevant to the description of HTTP.</p>
+
+<h3 id="Client_the_user-agent">Client: the user-agent</h3>
+
+<p>The <em>user-agent</em> is any tool that acts on the behalf of the user. This role is primarily performed by the Web browser; other possibilities are programs used by engineers and Web developers to debug their applications.</p>
+
+<p>The browser is <strong>always</strong> the entity initiating the request. It is never the server (though some mechanisms have been added over the years to simulate server-initiated messages).</p>
+
+<p>To present a Web page, the browser sends an original request to fetch the HTML document that represents the page. It then parses this file, making additional requests corresponding to execution scripts, layout information (CSS) to display, and sub-resources contained within the page (usually images and videos). The Web browser then mixes these resources to present to the user a complete document, the Web page. Scripts executed by the browser can fetch more resources in later phases and the browser updates the Web page accordingly.</p>
+
+<p>A Web page is a hypertext document. This means some parts of displayed text are links which can be activated (usually by a click of the mouse) to fetch a new Web page, allowing the user to direct their user-agent and navigate through the Web. The browser translates these directions in HTTP requests, and further interprets the HTTP responses to present the user with a clear response.</p>
+
+<h3 id="The_Web_server">The Web server</h3>
+
+<p>On the opposite side of the communication channel, is the server, which <em>serves</em> the document as requested by the client. A server appears as only a single machine virtually: this is because it may actually be a collection of servers, sharing the load (load balancing) or a complex piece of software interrogating other computers (like cache, a DB server, or e-commerce servers), totally or partially generating the document on demand.</p>
+
+<p>A server is not necessarily a single machine, but several server software instances can be hosted on the same machine. With HTTP/1.1 and the {{HTTPHeader("Host")}} header, they may even share the same IP address.</p>
+
+<h3 id="Proxies">Proxies</h3>
+
+<p>Between the Web browser and the server, numerous computers and machines relay the HTTP messages. Due to the layered structure of the Web stack, most of these operate at the transport, network or physical levels, becoming transparent at the HTTP layer and potentially making a significant impact on performance. Those operating at the application layers are generally called <strong>proxies</strong>. These can be transparent, forwarding on the requests they receive without altering them in any way, or non-transparent, in which case they will change the request in some way before passing it along to the server. Proxies may perform numerous functions:</p>
+
+<ul>
+ <li>caching (the cache can be public or private, like the browser cache)</li>
+ <li>filtering (like an antivirus scan or parental controls)</li>
+ <li>load balancing (to allow multiple servers to serve the different requests)</li>
+ <li>authentication (to control access to different resources)</li>
+ <li>logging (allowing the storage of historical information)</li>
+</ul>
+
+<h2 id="Basic_aspects_of_HTTP">Basic aspects of HTTP</h2>
+
+<h3 id="HTTP_is_simple">HTTP is simple</h3>
+
+<p>HTTP is generally designed to be simple and human readable, even with the added complexity introduced in HTTP/2 by encapsulating HTTP messages into frames. HTTP messages can be read and understood by humans, providing easier testing for developers, and reduced complexity for newcomers.</p>
+
+<h3 id="HTTP_is_extensible">HTTP is extensible</h3>
+
+<p>Introduced in HTTP/1.0, <a href="/en-US/docs/Web/HTTP/Headers">HTTP headers</a> make this protocol easy to extend and experiment with. New functionality can even be introduced by a simple agreement between a client and a server about a new header's semantics.</p>
+
+<h3 id="HTTP_is_stateless_but_not_sessionless">HTTP is stateless, but not sessionless</h3>
+
+<p>HTTP is stateless: there is no link between two requests being successively carried out on the same connection. This immediately has the prospect of being problematic for users attempting to interact with certain pages coherently, for example, using e-commerce shopping baskets. But while the core of HTTP itself is stateless, HTTP cookies allow the use of stateful sessions. Using header extensibility, HTTP Cookies are added to the workflow, allowing session creation on each HTTP request to share the same context, or the same state.</p>
+
+<h3 id="HTTP_and_connections">HTTP and connections</h3>
+
+<p>A connection is controlled at the transport layer, and therefore fundamentally out of scope for HTTP. Though HTTP doesn't require the underlying transport protocol to be connection-based; only requiring it to be <em>reliable</em>, or not lose messages (so at minimum presenting an error). Among the two most common transport protocols on the Internet, TCP is reliable and UDP isn't. HTTP therefore relies on the TCP standard, which is connection-based.</p>
+
+<p>Before a client and server can exchange an HTTP request/response pair, they must establish a TCP connection, a process which requires several round-trips. The default behavior of HTTP/1.0 is to open a separate TCP connection for each HTTP request/response pair. This is less efficient than sharing a single TCP connection when multiple requests are sent in close succession.</p>
+
+<p>In order to mitigate this flaw, HTTP/1.1 introduced <em>pipelining</em> (which proved difficult to implement) and <em>persistent connections</em>: the underlying TCP connection can be partially controlled using the {{HTTPHeader("Connection")}} header. HTTP/2 went a step further by multiplexing messages over a single connection, helping keep the connection warm and more efficient.</p>
+
+<p>Experiments are in progress to design a better transport protocol more suited to HTTP. For example, Google is experimenting with <a href="https://en.wikipedia.org/wiki/QUIC">QUIC</a> which builds on UDP to provide a more reliable and efficient transport protocol.</p>
+
+<h2 id="What_can_be_controlled_by_HTTP">What can be controlled by HTTP</h2>
+
+<p>This extensible nature of HTTP has, over time, allowed for more control and functionality of the Web. Cache or authentication methods were functions handled early in HTTP history. The ability to relax the <em>origin constraint</em>, by contrast, has only been added in the 2010s.</p>
+
+<p>Here is a list of common features controllable with HTTP.</p>
+
+<ul>
+ <li><em><a href="/en-US/docs/Web/HTTP/Caching">Caching</a></em><br>
+ How documents are cached can be controlled by HTTP. The server can instruct proxies and clients, about what to cache and for how long. The client can instruct intermediate cache proxies to ignore the stored document.</li>
+ <li><em>Relaxing the origin constraint</em><br>
+ To prevent snooping and other privacy invasions, Web browsers enforce strict separation between Web sites. Only pages from the <strong>same origin</strong> can access all the information of a Web page. Though such constraint is a burden to the server, HTTP headers can relax this strict separation on the server side, allowing a document to become a patchwork of information sourced from different domains; there could even be security-related reasons to do so.</li>
+ <li><em>Authentication</em><br>
+ Some pages may be protected so that only specific users can access them. Basic authentication may be provided by HTTP, either using the {{HTTPHeader("WWW-Authenticate")}} and similar headers, or by setting a specific session using <a href="/en-US/docs/Web/HTTP/Cookies">HTTP cookies</a>.</li>
+ <li><em><a href="/en-US/docs/Web/HTTP/Proxy_servers_and_tunneling">Proxy and tunneling</a></em><br>
+ Servers or clients are often located on intranets and hide their true IP address from other computers. HTTP requests then go through proxies to cross this network barrier. Not all proxies are HTTP proxies. The SOCKS protocol, for example, operates at a lower level. Other protocols, like ftp, can be handled by these proxies.</li>
+ <li><em>Sessions</em><br>
+ Using HTTP cookies allows you to link requests with the state of the server. This creates sessions, despite basic HTTP being a state-less protocol. This is useful not only for e-commerce shopping baskets, but also for any site allowing user configuration of the output.</li>
+</ul>
+
+<h2 id="HTTP_flow">HTTP flow</h2>
+
+<p>When a client wants to communicate with a server, either the final server or an intermediate proxy, it performs the following steps:</p>
+
+<ol>
+ <li>Open a TCP connection: The TCP connection is used to send a request, or several, and receive an answer. The client may open a new connection, reuse an existing connection, or open several TCP connections to the servers.</li>
+ <li>Send an HTTP message: HTTP messages (before HTTP/2) are human-readable. With HTTP/2, these simple messages are encapsulated in frames, making them impossible to read directly, but the principle remains the same. For example:
+ <pre class="line-numbers language-html notranslate"><code class="language-html">GET / HTTP/1.1
+Host: developer.mozilla.org
+Accept-Language: fr</code></pre>
+ </li>
+ <li>Read the response sent by the server, such as:
+ <pre class="line-numbers language-html notranslate"><code class="language-html">HTTP/1.1 200 OK
+Date: Sat, 09 Oct 2010 14:28:02 GMT
+Server: Apache
+Last-Modified: Tue, 01 Dec 2009 20:18:22 GMT
+ETag: "51142bc1-7449-479b075b2891b"
+Accept-Ranges: bytes
+Content-Length: 29769
+Content-Type: text/html
+
+&lt;!DOCTYPE html... (here comes the 29769 bytes of the requested web page)</code></pre>
+ </li>
+ <li>Close or reuse the connection for further requests.</li>
+</ol>
+
+<p>If HTTP pipelining is activated, several requests can be sent without waiting for the first response to be fully received. HTTP pipelining has proven difficult to implement in existing networks, where old pieces of software coexist with modern versions. HTTP pipelining has been superseded in HTTP/2 with more robust multiplexing requests within a frame.</p>
+
+<h2 id="HTTP_Messages">HTTP Messages</h2>
+
+<p>HTTP messages, as defined in HTTP/1.1 and earlier, are human-readable. In HTTP/2, these messages are embedded into a binary structure, a <em>frame</em>, allowing optimizations like compression of headers and multiplexing. Even if only part of the original HTTP message is sent in this version of HTTP, the semantics of each message is unchanged and the client reconstitutes (virtually) the original HTTP/1.1 request. It is therefore useful to comprehend HTTP/2 messages in the HTTP/1.1 format.</p>
+
+<p>There are two types of HTTP messages, requests and responses, each with its own format.</p>
+
+<h3 id="Requests">Requests</h3>
+
+<p>An example HTTP request:</p>
+
+<p><img alt="A basic HTTP request" src="https://mdn.mozillademos.org/files/13687/HTTP_Request.png" style="height: 336px; width: 693px;"></p>
+
+<p>Requests consists of the following elements:</p>
+
+<ul>
+ <li>An HTTP <a href="/en-US/docs/Web/HTTP/Methods">method</a>, usually a verb like {{HTTPMethod("GET")}}, {{HTTPMethod("POST")}} or a noun like {{HTTPMethod("OPTIONS")}} or {{HTTPMethod("HEAD")}} that defines the operation the client wants to perform. Typically, a client wants to fetch a resource (using <code>GET</code>) or post the value of an <a href="/en-US/docs/Web/Guide/HTML/Forms">HTML form</a> (using <code>POST</code>), though more operations may be needed in other cases.</li>
+ <li>The path of the resource to fetch; the URL of the resource stripped from elements that are obvious from the context, for example without the {{Glossary("protocol")}} (<code>http://</code>), the {{Glossary("domain")}} (here, <code>developer.mozilla.org</code>), or the TCP {{Glossary("port")}} (here, <code>80</code>).</li>
+ <li>The version of the HTTP protocol.</li>
+ <li>Optional <a href="/en-US/docs/Web/HTTP/Headers">headers</a> that convey additional information for the servers.</li>
+ <li>Or a body, for some methods like <code>POST</code>, similar to those in responses, which contain the resource sent.</li>
+</ul>
+
+<h3 id="Responses">Responses</h3>
+
+<p>An example response:</p>
+
+<p><img alt="" src="https://mdn.mozillademos.org/files/13691/HTTP_Response.png" style="height: 494px; width: 758px;"></p>
+
+<p>Responses consist of the following elements:</p>
+
+<ul>
+ <li>The version of the HTTP protocol they follow.</li>
+ <li>A <a href="/en-US/docs/Web/HTTP/Status">status code</a>, indicating if the request was successful, or not, and why.</li>
+ <li>A status message, a non-authoritative short description of the status code.</li>
+ <li>HTTP <a href="/en-US/docs/Web/HTTP/Headers">headers</a>, like those for requests.</li>
+ <li>Optionally, a body containing the fetched resource.</li>
+</ul>
+
+<h2 id="APIs_based_on_HTTP">APIs based on HTTP</h2>
+
+<p>The most commonly used API based on HTTP is the {{domxref("XMLHttpRequest")}} API, which can be used to exchange data between a {{Glossary("user agent")}} and a server. The modern {{domxref("Fetch API")}} provides the same features with a more powerful and flexible feature set.</p>
+
+<p>Another API, <a href="/en-US/docs/Web/API/Server-sent_events">server-sent events</a>, is a one-way service that allows a server to send events to the client, using HTTP as a transport mechanism. Using the {{domxref("EventSource")}} interface, the client opens a connection and establishes event handlers. The client browser automatically converts the messages that arrive on the HTTP stream into appropriate {{domxref("Event")}} objects, delivering them to the event handlers that have been registered for the events' {{domxref("Event.type", "type")}} if known, or to the {{domxref("EventSource.onmessage", "onmessage")}} event handler if no type-specific event handler was established.</p>
+
+<h2 id="Conclusion">Conclusion</h2>
+
+<p>HTTP is an extensible protocol that is easy to use. The client-server structure, combined with the ability to simply add headers, allows HTTP to advance along with the extended capabilities of the Web.</p>
+
+<p>Though HTTP/2 adds some complexity, by embedding HTTP messages in frames to improve performance, the basic structure of messages has stayed the same since HTTP/1.0. Session flow remains simple, allowing it to be investigated, and debugged with a simple <a href="/en-US/docs/Tools/Network_Monitor">HTTP message monitor</a>.</p>
diff --git a/files/id/web/http/index.html b/files/id/web/http/index.html
new file mode 100644
index 0000000000..3e2144fb57
--- /dev/null
+++ b/files/id/web/http/index.html
@@ -0,0 +1,81 @@
+---
+title: HTTP
+slug: Web/HTTP
+tags:
+ - HTTP
+ - Referensi
+ - Web
+translation_of: Web/HTTP
+---
+<div>{{HTTPSidebar}}</div>
+
+<p class="summary"><strong><dfn>Hypertext Transfer Protocol (HTTP)</dfn></strong> adalah sebuah protokol <a class="external" href="http://en.wikipedia.org/wiki/Application_Layer">lapisan-aplikasi</a> untuk mentransmisi dokumen <em>hypermedia</em>, seperti HTML. Ini dirancang untuk komunikasi antara peramban web dan server web, meskipun bisa digunakan untuk keperluan lain juga. Ini mengikuti sebuah <a class="external" href="https://en.wikipedia.org/wiki/Client%E2%80%93server_model">model klien-server</a> klasik, dengan sebuah klien membuka sebuah koneksi, membuat sebuah permintaan (<em>request)</em>, dan menunggu hingga mendapatkan sebuah respon. Ini juga sebuah <a class="external" href="http://en.wikipedia.org/wiki/Stateless_protocol">protokol tanpa-keadaan</a>, maksudnya server tidak menyimpan data (keadaan) antara kedua permintaan. Meskipun kadang berdasarkan pada sebuah lapisan TCP/IP, bisa digunakan pada <a class="external" href="http://en.wikipedia.org/wiki/Transport_Layer">lapisan transport</a> andal apa saja;  berarti sebuah protokol tidak kehilangan pesan secara diam-diam, seperti UDP.</p>
+
+<div class="column-container">
+<div class="column-half">
+<h2 id="Tutorial">Tutorial</h2>
+
+<p>Belajar bagaimana untuk menggunakan HTTP dengan panduan dan tutorial.</p>
+
+<dl>
+ <dt><a href="/en-US/docs/Web/HTTP/Overview">Ikhtisan dari HTTP</a></dt>
+ <dd>Fitur dasar dari protokol klien-server: apa yang bisa digunakan dan penggunaannya.</dd>
+ <dt><a href="/en-US/docs/Web/HTTP/Caching">HTTP <em>Cache</em></a></dt>
+ <dd><em>Caching</em> sangat penting untuk mempercepat situs web. Artikel ini menjelaskan perbedaan metode dalam <em>caching </em> dan bagaimana menggunakan HTTP Headers untuk mengendalikannya.</dd>
+ <dt><a href="/en-US/docs/Web/HTTP/Cookies">HTTP Kuki</a></dt>
+ <dd>Bagaimana kuki bekerja didefinisi oleh <a class="external" href="http://tools.ietf.org/html/rfc6265">RFC 6265</a>. Pada penerimaan sebuah permintaan HTTP, sebuah server bisa mengirim sebuah <em>header</em> <code>Set-Cookie</code> dengan responnya. Klien kemudian mengembalikan nilai kuki dengan setiap permintaan ke server yang sama dalam bentuk header permintaan <code>Cookie</code>. Kuki juga dapat ditetapkan untuk kadaluarsa pada tanggal tertentu, atau pembatasan pada domain dan jalur tertentu.</dd>
+ <dt><a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS">Cross-Origin Resource Sharing (CORS)</a></dt>
+ <dd><strong>Permintaan Cross-site HTTP</strong> adalah permintaan HTTP untuk sumber daya dari <strong>domain lain</strong> kemduian domain dari sumberdaya membuat permintaan. Contohnya, sebuah laman HTML dari Domain A (<code>http://domaina.example/</code>), membuat sebuah permintaan untuk sebuah gambar pada Domain B (<code>http://domainb.foo/image.jpg</code>) malalui elemen <code>img</code>. Laman situs saat ini sangat biasa memuat sumber daya <em>cross-site</em>, termasuk CSS <em>sytlesheets</em>, gambar, skrip, dan sumber daya lainnya. CORS memungkinkan pengembang web untuk mengendaikan bagaimana situs mereka bereaksi kepada permintaan <em>cross-site</em>.</dd>
+</dl>
+
+<dl>
+ <dt><a href="/en-US/docs/Web/HTTP/Basics_of_HTTP/Evolution_of_HTTP">Perkembangan dari HTTP</a></dt>
+ <dd>Sebuah deskripsi  dari perubahan antara HTTP veri awal, ke HTTP/2 moderen dan seterusnya.</dd>
+ <dt><a href="https://wiki.mozilla.org/Security/Guidelines/Web_Security">Panduan keamanan situs Mozilla</a></dt>
+ <dd>Sebuah koleksi dari tip untuk membantu tim operasional dengan membuat aplikasi web yang aman.</dd>
+ <dt><a href="/en-US/docs/Web/HTTP/Messages">Pesan HTTP (HTTP <em>Messages</em>)</a></dt>
+ <dd>Penjelasan tipe dan struktur dari berbagai jenis dan struktur dari HTTP/1.x dan HTTP/2.</dd>
+ <dt><a href="/en-US/docs/Web/HTTP/Session">Sebuah sesi HTTP yang khas</a></dt>
+ <dd>Menunjukan dan menjelaskan alur dari sebuah sesi HTTP biasa.</dd>
+ <dt> </dt>
+ <dt><a href="/en-US/docs/Web/HTTP/Connection_management_in_HTTP_1.x">Manajemen koneksi pada HTTP/1.x</a></dt>
+ <dd>Menjelaskan tiga model manajemen koneksi yang tersedia pada HTTP/1.x, serta kelebihan dan kekurangan mereka.</dd>
+</dl>
+</div>
+
+<div class="column-half">
+<h2 id="Referensi">Referensi</h2>
+
+<p>Jelajahi dokumentasi referensi HTTP yang terperinci.</p>
+
+<dl>
+ <dt><a href="/en-US/docs/Web/HTTP/Headers">HTTP <em>Headers</em></a></dt>
+ <dd>Pesan HTTP digunakan untuk menjelaskan secara tepat sumber daya atau perilaku dari server atau klien. <em>header</em> kepemilikan khusus bisa ditambahkan dengan menggunakan awalan <code>X-</code>; yang lain pada sebuah <a class="external" href="http://www.iana.org/assignments/message-headers/perm-headers.html">registri IANA</a>, yang konten aslinya didefiniskan di <a class="external" href="http://tools.ietf.org/html/rfc4229">RFC 4229</a>. IANA juga mengelola <a class="external" href="http://www.iana.org/assignments/message-headers/prov-headers.html">registri dari usulan baru header pesan HTTP</a>.</dd>
+ <dt><a href="/en-US/docs/Web/HTTP/Methods">Metode Permintaan HTTP</a></dt>
+ <dd>Berbagai operasi yang bisa dilakukan dengan HTTP: {{HTTPMethod("GET")}}, {{HTTPMethod("POST")}}, tetapi juga permintaan yang kurang umum seperti {{HTTPMethod("OPTIONS")}}, {{HTTPMethod("DELETE")}} atau {{HTTPMethod("TRACE")}}.</dd>
+ <dt><a href="/en-US/docs/Web/HTTP/Response_codes">Kode Status Respon HTTP</a></dt>
+ <dd>Kode respon HTTP menunjukan apakah permintaan HTTP tertentu berhasil diselesaikan. Respon dikelompokan dalam lima kelas: respon informasi, respon sukses, pengaihan, kesalahan klien, dan kealahan server.</dd>
+ <dt><a href="/en-US/docs/Web/HTTP/Headers/Content-Security-Policy">Petunjuk CSP (CSP directives)</a></dt>
+ <dd>Bidang header respon {{HTTPHeader("Content-Security-Policy")}} memungkinkan administrator situs web untuk mengendalikan sumber daya <em>user agent</em> yang memungkinkan untuk dimuat pada halaman tertentu. Dengan beberapa pengecualian, sebagian besar kebijakan melibatkan penentuan asal server dan skrip titik-akhir (<em>endpoints</em>). </dd>
+</dl>
+
+<h2 id="Alat_sumber_daya">Alat &amp; sumber daya</h2>
+
+<p>Alat dan sumber daya yang berguna untuk memahami dan <em>debugging</em> HTTP.</p>
+
+<dl>
+ <dt><a href="https://developer.mozilla.org/en-US/docs/Tools">Firefox Developer Tools</a></dt>
+ <dd><a href="https://developer.mozilla.org/en-US/docs/Tools/Network_Monitor">Network monitor</a></dd>
+ <dt><a href="https://observatory.mozilla.org/">Mozilla Observatory</a></dt>
+ <dd>
+ <p>Sebuah proyek yang dideain untuk membantu pengembang, administrator sistem, dan keamanan profesional mengkonfigurasi situs mereka secara aman.</p>
+ </dd>
+ <dt><a href="https://redbot.org/">RedBot</a></dt>
+ <dd>Alat untuk memeriksa header terkati-cache Anda.</dd>
+ <dt><a href="http://www.html5rocks.com/en/tutorials/internals/howbrowserswork/">Bagaimana Peramban Bekerja</a></dt>
+ <dd>Sebuah artikel yang sangat komprehensif tentang internal peramban dan alur permintaan melalui protokol HTTP. Sebuah artikel yang HARUS-DIBACA oleh tiap pengembang web.</dd>
+</dl>
+
+<p> </p>
+</div>
+</div>
diff --git a/files/id/web/http/methods/get/index.html b/files/id/web/http/methods/get/index.html
new file mode 100644
index 0000000000..ff8f8cdbab
--- /dev/null
+++ b/files/id/web/http/methods/get/index.html
@@ -0,0 +1,73 @@
+---
+title: GET
+slug: Web/HTTP/Methods/GET
+tags:
+ - HTTP
+ - Referensi
+ - Request method
+translation_of: Web/HTTP/Methods/GET
+---
+<div>{{HTTPSidebar}}</div>
+
+<p>Request <strong>HTTP <code>GET</code> method</strong> merupakan representasi dari resource spesifik. Request menggunakan <code>GET</code> hanya menerima data.</p>
+
+<table class="properties">
+ <tbody>
+ <tr>
+ <th scope="row">Request has body</th>
+ <td>No</td>
+ </tr>
+ <tr>
+ <th scope="row">Successful response has body</th>
+ <td>Yes</td>
+ </tr>
+ <tr>
+ <th scope="row">{{Glossary("Safe")}}</th>
+ <td>Yes</td>
+ </tr>
+ <tr>
+ <th scope="row">{{Glossary("Idempotent")}}</th>
+ <td>Yes</td>
+ </tr>
+ <tr>
+ <th scope="row">{{Glossary("Cacheable")}}</th>
+ <td>Yes</td>
+ </tr>
+ <tr>
+ <th scope="row">Allowed in HTML forms</th>
+ <td>Yes</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Sintaks">Sintaks</h2>
+
+<pre class="syntaxbox">GET /index.html
+</pre>
+
+<h2 id="Spesifikasi">Spesifikasi</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">Spesifikasi</th>
+ <th scope="col">Judul</th>
+ </tr>
+ <tr>
+ <td>{{RFC("7231", "GET", "4.3.1")}}</td>
+ <td>Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Kompabilitas_Browser">Kompabilitas Browser</h2>
+
+<p class="hidden">Tabel Kompabilitas pada halaman ini adalah hasil dari structured data. Jika anda ingin berkontribusi, Silakan cek <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> dan kirimkan pull request.</p>
+
+<p>{{Compat("http.methods.GET")}}</p>
+
+<h2 id="Lihat_Juga">Lihat Juga</h2>
+
+<ul>
+ <li>{{HTTPHeader("Range")}}</li>
+</ul>
diff --git a/files/id/web/http/methods/index.html b/files/id/web/http/methods/index.html
new file mode 100644
index 0000000000..1045732cc2
--- /dev/null
+++ b/files/id/web/http/methods/index.html
@@ -0,0 +1,76 @@
+---
+title: HTTP request methods
+slug: Web/HTTP/Methods
+tags:
+ - HTTP
+ - Methods
+ - Reference
+ - TopicStub
+translation_of: Web/HTTP/Methods
+---
+<div>{{HTTPSidebar}}</div>
+
+<div>HTTP mendefinisikan seperangkat <strong>metode permintaan</strong> untuk menunjukkan tindakan yang diinginkan yang akan dilakukan untuk sumber daya tertentu. Meskipun mereka juga bisa menjadi kata benda, metode permintaan ini kadang-kadang disebut sebagai <em>verba HTTP</em>. Masing-masing menerapkan semantik yang berbeda, namun beberapa fitur umum digunakan bersama oleh mereka: mis. Metode permintaan dapat berupa {{glossary("safe")}}, {{glossary("idempotent")}}, atau {{glossary("cacheable")}}.</div>
+
+<div> </div>
+
+<dl>
+ <dt><code><a href="/id/docs/Web/HTTP/Methods/GET">GET</a></code></dt>
+ <dd>Metode <code>GET</code> meminta representasi sumber daya yang ditentukan. Permintaan menggunakan <code>GET</code> seharusnya hanya mengambil data..</dd>
+ <dt><code><a href="/id/docs/Web/HTTP/Methods/HEAD">HEAD</a></code></dt>
+ <dd>Metode <code>HEAD </code>meminta tanggapan yang identik dengan permintaan <code>GET</code>, namun tanpa respon body.</dd>
+ <dt><code><a href="/id/docs/Web/HTTP/Methods/POST">POST</a></code></dt>
+ <dd>Metode <code>POST </code>digunakan untuk mengirimkan entitas ke sumber daya yang ditentukan, sering menyebabkan perubahan pada keadaan atau efek samping pada server.</dd>
+ <dt><code><a href="/id/docs/Web/HTTP/Methods/PUT">PUT</a></code></dt>
+ <dd>
+ <p>Metode <code>PUT </code>menggantikan semua representasi terkini dari sumber target dengan muatan permintaan.</p>
+ </dd>
+ <dt><code><a href="/id/docs/Web/HTTP/Methods/DELETE">DELETE</a></code></dt>
+ <dd>Metode <code>DELETE </code>akan menghapus sumber daya yang ditentukan.</dd>
+ <dt><code><a href="/id/docs/Web/HTTP/Methods/CONNECT">CONNECT</a></code></dt>
+ <dd>
+ <p>Metode <code>CONNECT </code>menetapkan terowongan ke server yang diidentifikasi oleh sumber target.</p>
+ </dd>
+ <dt><code><a href="/id/docs/Web/HTTP/Methods/OPTIONS">OPTIONS</a></code></dt>
+ <dd>Metode <code>OPTIONS </code>digunakan untuk menggambarkan opsi komunikasi untuk sumber target.</dd>
+ <dt><code><a href="/id/docs/Web/HTTP/Methods/TRACE">TRACE</a></code></dt>
+ <dd>
+ <p>Metode <code>TRACE </code>melakukan tes pesan loop-back di sepanjang jalan menuju sumber daya target.</p>
+ </dd>
+ <dt><code><a href="/id/docs/Web/HTTP/Methods/PATCH">PATCH</a></code></dt>
+ <dd>Metode <code>PATCH </code>digunakan untuk menerapkan modifikasi sebagian pada sumber daya.</dd>
+</dl>
+
+<h2 id="Spesifikasi">Spesifikasi</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">Spesifikasi</th>
+ <th scope="col">Judul</th>
+ <th scope="col">Komentar</th>
+ </tr>
+ <tr>
+ <td>{{RFC("7231", "Request methods", "4")}}</td>
+ <td>Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content</td>
+ <td>Specifies GET, HEAD, POST, PUT, DELETE, CONNECT, OPTIONS, TRACE.</td>
+ </tr>
+ <tr>
+ <td>{{RFC("5789", "Patch method", "2")}}</td>
+ <td>PATCH Method for HTTP</td>
+ <td>Specifies PATCH.</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Kompabilitas_Browser">Kompabilitas Browser</h2>
+
+<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p>
+
+<p>{{Compat("http.methods")}}</p>
+
+<h2 id="Lihat_Juga">Lihat Juga</h2>
+
+<ul>
+ <li><a href="/en-US/docs/Web/HTTP/Headers">HTTP headers</a></li>
+</ul>
diff --git a/files/id/web/http/proxy_servers_and_tunneling/index.html b/files/id/web/http/proxy_servers_and_tunneling/index.html
new file mode 100644
index 0000000000..f035225649
--- /dev/null
+++ b/files/id/web/http/proxy_servers_and_tunneling/index.html
@@ -0,0 +1,100 @@
+---
+title: Proxy servers and tunneling
+slug: Web/HTTP/Proxy_servers_and_tunneling
+tags:
+ - HTTP
+ - HTTP Tunneling
+ - NeedsTranslation
+ - Proxies
+ - Proxy
+ - TopicStub
+translation_of: Web/HTTP/Proxy_servers_and_tunneling
+---
+<div>{{HTTPSidebar}}</div>
+
+<p class="summary">When navigating through different networks of the Internet, proxy servers and HTTP tunnels are facilitating access to content on the World Wide Web. A proxy can be on the user's local computer, or anywhere between the user's computer and a destination server on the Internet. This page outlines some basics about proxies and introduces a few configuration options.</p>
+
+<p>There are two types of proxies: <strong>forward proxies</strong> (or tunnel, or gateway) and<strong> reverse proxies</strong> (used to control and protect access to a server for load-balancing, authentication, decryption or caching).</p>
+
+<h2 id="Forward_proxies">Forward proxies</h2>
+
+<p>A forward proxy, or gateway, or just "proxy" provides proxy services to a client or a group of clients. There are likely hundreds of thousands of open forward proxies on the Internet. They store and forward Internet services (like the DNS, or web pages) to reduce and control the bandwidth used by the group.</p>
+
+<p>Forward proxies can also be anonymous proxies and allow users to hide their IP address while browsing the Web or using other Internet services. <a href="https://www.torproject.org/">TOR</a> (The Onion Router), routes internet traffic through multiple proxies for anonymity.</p>
+
+<h2 id="Reverse_proxies">Reverse proxies</h2>
+
+<p>As the name implies, a reverse proxy does the opposite of what a forward proxy does: A forward proxy acts on behalf of clients (or requesting hosts). Forward proxies can hide the identities of clients whereas reverse proxies can hide the identities of servers. Reverse proxies have several use cases, a few are:</p>
+
+<ul>
+ <li>Load balancing: distribute the load to several web servers,</li>
+ <li>Cache static content: offload the web servers by caching static content like pictures,</li>
+ <li>Compression: compress and optimize content to speed up load time.</li>
+</ul>
+
+<h2 id="Forwarding_client_information_through_proxies">Forwarding client information through proxies</h2>
+
+<p>Proxies can make requests appear as if they originated from the proxy's IP address. This can be useful if a proxy is used to provide client anonymity, but in other cases information from the original request is lost. The IP address of the original client is often used for debugging, statistics, or generating location-dependent content. A common way to disclose this information is by using the following HTTP headers:</p>
+
+<p>The standardized header:</p>
+
+<dl>
+ <dt>{{HTTPHeader("Forwarded")}}</dt>
+ <dd>Contains information from the client-facing side of proxy servers that is altered or lost when a proxy is involved in the path of the request.</dd>
+</dl>
+
+<p>Or the de-facto standard versions:</p>
+
+<dl>
+ <dt>{{HTTPHeader("X-Forwarded-For")}} {{non-standard_inline}}</dt>
+ <dd>Identifies the originating IP addresses of a client connecting to a web server through an HTTP proxy or a load balancer.</dd>
+ <dt>{{HTTPHeader("X-Forwarded-Host")}} {{non-standard_inline}}</dt>
+ <dd>Identifies the original host requested that a client used to connect to your proxy or load balancer.</dd>
+ <dt>{{HTTPHeader("X-Forwarded-Proto")}} {{non-standard_inline}}</dt>
+ <dd>identifies the protocol (HTTP or HTTPS) that a client used to connect to your proxy or load balancer.</dd>
+</dl>
+
+<p>To provide information about the proxy itself (not about the client connecting to it), the <code>Via</code> header can be used.</p>
+
+<dl>
+ <dt>{{HTTPHeader("Via")}}</dt>
+ <dd>Added by proxies, both forward and reverse proxies, and can appear in the request headers and the response headers.</dd>
+</dl>
+
+<h2 id="HTTP_tunneling">HTTP tunneling</h2>
+
+<p>Tunneling transmits private network data and protocol information through public network by encapsulating the data. HTTP tunneling is using a protocol of higher level (HTTP) to transport a lower level protocol (TCP).</p>
+
+<p>The HTTP protocol specifies a request method called {{HTTPMethod("CONNECT")}}. It starts two-way communications with the requested resource and can be used to open a tunnel. This is how a client behind an HTTP proxy can access websites using SSL (i.e. HTTPS, port 443). Note, however, that not all proxy servers support the <code>CONNECT</code> method or limit it to port 443 only.</p>
+
+<p>See also the <a href="https://en.wikipedia.org/wiki/HTTP_tunnel">HTTP tunnel article on Wikipedia</a>.</p>
+
+<h2 id="Proxy_Auto-Configuration_PAC">Proxy Auto-Configuration (PAC)</h2>
+
+<p>A <a href="/en-US/docs/Web/HTTP/Proxy_servers_and_tunneling/Proxy_Auto-Configuration_(PAC)_file">Proxy Auto-Configuration (PAC)</a> file is a <a href="/en-US/docs/Web/JavaScript">JavaScript</a> function that determines whether web browser requests (HTTP, HTTPS, and FTP) go directly to the destination or are forwarded to a web proxy server. The JavaScript function contained in the PAC file defines the function:</p>
+
+<p id="Saving_the_Auto-Config_File_Setting_the_MIME_Type">The auto-config file should be saved to a file with a <code>.pac</code> filename extension:</p>
+
+<pre class="syntaxbox notranslate">proxy.pac</pre>
+
+<p>And the MIME type set to:</p>
+
+<pre class="syntaxbox notranslate">application/x-ns-proxy-autoconfig</pre>
+
+<p>The file consists of a function called <code>FindProxyForURL</code>. The example below will work in an environment where the internal DNS server is set up so that it can only resolve internal host names, and the goal is to use a proxy only for hosts that aren't resolvable:</p>
+
+<pre class="brush: js notranslate">function FindProxyForURL(url, host) {
+ if (isResolvable(host))
+  return "DIRECT";
+  else
+  return "PROXY proxy.mydomain.com:8080";
+}</pre>
+
+<p>See <a href="/en-US/docs/Web/HTTP/Proxy_servers_and_tunneling/Proxy_Auto-Configuration_(PAC)_file">Proxy Auto-Configuration (PAC)</a> for more examples.</p>
+
+<h2 id="See_also">See also</h2>
+
+<ul>
+ <li>{{HTTPMethod("CONNECT")}}</li>
+ <li><a href="https://en.wikipedia.org/wiki/Proxy_server">Proxy server on Wikipedia</a></li>
+</ul>
diff --git a/files/id/web/http/proxy_servers_and_tunneling/proxy_auto-configuration_(pac)_file/index.html b/files/id/web/http/proxy_servers_and_tunneling/proxy_auto-configuration_(pac)_file/index.html
new file mode 100644
index 0000000000..c470d2fe27
--- /dev/null
+++ b/files/id/web/http/proxy_servers_and_tunneling/proxy_auto-configuration_(pac)_file/index.html
@@ -0,0 +1,727 @@
+---
+title: Proxy Auto-Configuration (PAC) file
+slug: Web/HTTP/Proxy_servers_and_tunneling/Proxy_Auto-Configuration_(PAC)_file
+translation_of: Web/HTTP/Proxy_servers_and_tunneling/Proxy_Auto-Configuration_(PAC)_file
+---
+<div>{{HTTPSidebar}}</div>
+
+<p>File <strong>Proxy Auto-Configuration (PAC)</strong> adalah fungsi JavaScript yang menentukan apakah permintaan browser web (HTTP, HTTPS, dan FTP) langsung ke tujuan atau diteruskan ke server proxy web. Fungsi JavaScript yang terdapat dalam file PAC mendefinisikan fungsi tersebut:</p>
+
+<pre class="brush: js notranslate">function FindProxyForURL(url, host) {
+ // ...
+}</pre>
+
+<h2 id="Sintaksis">Sintaksis</h2>
+
+<pre class="syntaxbox notranslate">function FindProxyForURL(<var>url</var>, <var>host</var>)</pre>
+
+<h3 id="Parameter">Parameter</h3>
+
+<dl>
+ <dt><code><var>url</var></code></dt>
+ <dd>URL sedang diakses. Jalur dan komponen kueri <code>https://</code>URL dihilangkan. Di Chrome (versi 52 hingga 73), Anda dapat menonaktifkan ini dengan menyetel <code>PacHttpsUrlStrippingEnabled</code>ke <code>false</code>dalam kebijakan atau dengan meluncurkan dengan <code>--unsafe-pac-url</code>bendera baris perintah (di Chrome 74, hanya bendera yang berfungsi, dan dari 75 dan seterusnya, tidak ada cara untuk menonaktifkan jalur- pengupasan; mulai Chrome 81, pengupasan jalur tidak berlaku untuk URL HTTP, tetapi ada minat untuk mengubah perilaku ini agar cocok dengan HTTPS); di Firefox, preferensinya adalah <code>network.proxy.autoconfig_url.include_path</code>.</dd>
+ <dt><code><var>host</var></code></dt>
+ <dd>Nama host diekstrak dari URL. Ini hanya untuk kenyamanan; itu adalah string yang sama seperti antara <code>://</code>dan yang pertama <code>:</code>atau <code>/</code>setelah itu. Nomor port tidak termasuk dalam parameter ini. Ini dapat diekstrak dari URL bila perlu.</dd>
+</dl>
+
+<h2 id="Deskripsi">Deskripsi</h2>
+
+<p>Mengembalikan string yang menjelaskan konfigurasi. Format string ini ditentukan dalam <strong>format nilai pengembalian</strong> di bawah ini.</p>
+
+<h3 id="Format_nilai_pengembalian">Format nilai pengembalian</h3>
+
+<ul>
+ <li>Fungsi JavaScript mengembalikan satu string</li>
+ <li>Jika stringnya null, tidak ada proxy yang harus digunakan</li>
+ <li>String dapat berisi sejumlah blok penyusun berikut, dipisahkan oleh titik koma:</li>
+</ul>
+
+<dl>
+ <dt><code>DIRECT</code></dt>
+ <dd>Koneksi harus dibuat secara langsung, tanpa proxy apa pun</dd>
+ <dt><code>PROXY <em>host:port</em></code></dt>
+ <dd>Proksi yang ditentukan harus digunakan</dd>
+ <dt><code>SOCKS <em>host:port</em></code></dt>
+ <dd>Server SOCKS yang ditentukan harus digunakan</dd>
+</dl>
+
+<p>Versi terbaru Firefox juga mendukung:</p>
+
+<dl>
+ <dt><code>HTTP <em>host:port</em></code></dt>
+ <dd>Proksi yang ditentukan harus digunakan</dd>
+ <dt><code>HTTPS <em>host:port</em></code></dt>
+ <dd>Proksi HTTPS yang ditentukan harus digunakan</dd>
+ <dt><code>SOCKS4 <em>host:port</em></code></dt>
+ <dt><code>SOCKS5 <em>host:port</em></code></dt>
+ <dd>Server SOCKS yang ditentukan (dengan versi SOCK yang ditentukan) harus digunakan</dd>
+</dl>
+
+<p>Jika ada beberapa pengaturan yang dipisahkan titik koma, pengaturan paling kiri akan digunakan, sampai Firefox gagal membuat sambungan ke proxy. Dalam hal ini, nilai selanjutnya akan digunakan, dll.</p>
+
+<p>Browser akan secara otomatis mencoba proxy yang sebelumnya tidak merespons setelah 30 menit. Upaya tambahan akan berlanjut mulai dari satu jam, selalu menambahkan 30 menit ke waktu yang telah berlalu di antara upaya.</p>
+
+<p>Jika semua proxy sedang down, dan tidak ada opsi LANGSUNG yang ditentukan, browser akan menanyakan apakah proxy harus diabaikan untuk sementara, dan koneksi langsung diupayakan. Setelah 20 menit, browser akan menanyakan apakah proxy harus dicoba lagi, menanyakan lagi setelah 40 menit tambahan. Kueri akan berlanjut, selalu menambahkan 20 menit ke waktu yang telah berlalu di antara kueri.</p>
+
+<h4 id="Contoh">Contoh</h4>
+
+<dl>
+ <dt><code>PROXY w3proxy.netscape.com:8080; PROXY mozilla.netscape.com:8081</code></dt>
+ <dd>Proksi utama adalah w3proxy: 8080; jika turun, mulailah menggunakan mozilla: 8081 hingga proxy utama muncul lagi.</dd>
+ <dt><code>PROXY w3proxy.netscape.com:8080; PROXY mozilla.netscape.com:8081; DIRECT</code></dt>
+ <dd>Sama seperti di atas, tetapi jika kedua proxy turun, secara otomatis mulai membuat koneksi langsung. (Pada contoh pertama di atas, Netscape akan menanyakan konfirmasi pengguna tentang membuat koneksi langsung; dalam hal ini, tidak ada intervensi pengguna.)</dd>
+ <dt><code>PROXY w3proxy.netscape.com:8080; SOCKS socks:1080</code></dt>
+ <dd>Gunakan SOCKS jika proxy utama mati.</dd>
+</dl>
+
+<p id="Saving_the_Auto-Config_File_Setting_the_MIME_Type">File konfigurasi otomatis harus disimpan ke file dengan ekstensi nama file .pac:</p>
+
+<pre class="syntaxbox notranslate">proxy.pac</pre>
+
+<p>Dan tipe MIME harus disetel ke:</p>
+
+<pre class="syntaxbox notranslate">application/x-ns-proxy-autoconfig</pre>
+
+<p>Selanjutnya, Anda harus mengkonfigurasi server Anda untuk memetakan ekstensi nama file .pac ke jenis MIME.</p>
+
+<div class="note">
+<p><strong>Catatan: </strong></p>
+
+<ul>
+ <li>Fungsi JavaScript harus selalu disimpan ke file dengan sendirinya tetapi tidak disematkan dalam file HTML atau file lainnya.</li>
+ <li>Contoh-contoh di akhir dokumen ini lengkap. Tidak ada sintaks tambahan yang diperlukan untuk menyimpannya ke dalam file dan menggunakannya. (Tentu saja, JavaScripts harus diedit untuk mencerminkan nama domain dan / atau subnet situs Anda.)</li>
+</ul>
+</div>
+
+<h2 id="Fungsi_dan_lingkungan_yang_telah_ditentukan_sebelumnya">Fungsi dan lingkungan yang telah ditentukan sebelumnya</h2>
+
+<p>Fungsi-fungsi ini dapat digunakan untuk membuat file PAC:</p>
+
+<ul>
+ <li>Kondisi berbasis nama host
+
+ <ul>
+ <li><code><a href="#isPlainHostName">isPlainHostName()</a></code></li>
+ <li><code><a href="#dnsDomainIs">dnsDomainIs()</a></code></li>
+ <li><code><a href="#localHostOrDomainIs">localHostOrDomainIs()</a></code></li>
+ <li><code><a href="#isResolvable">isResolvable()</a></code></li>
+ <li><code><a href="#isInNet">isInNet()</a></code></li>
+ </ul>
+ </li>
+ <li>Fungsi utilitas terkait
+ <ul>
+ <li><code><a href="#dnsResolve">dnsResolve()</a></code></li>
+ <li><code><a href="#convert_addr">convert_addr()</a></code></li>
+ <li><code><a href="#myIpAddress">myIpAddress()</a></code></li>
+ <li><code><a href="#dnsDomainLevels">dnsDomainLevels()</a></code></li>
+ </ul>
+ </li>
+ <li>Ketentuan berbasis URL / hostname
+ <ul>
+ <li><code><a href="#shExpMatch(str, shexp)">shExpMatch()</a></code></li>
+ </ul>
+ </li>
+ <li>Kondisi berdasarkan waktu
+ <ul>
+ <li><code><a href="#weekdayRange">weekdayRange()</a></code></li>
+ <li><code><a href="#dateRange">dateRange()</a></code></li>
+ <li><code><a href="#timeRange">timeRange()</a></code></li>
+ </ul>
+ </li>
+ <li>Utilitas pencatatan
+ <ul>
+ <li>{{domxref ("Window / alert", "alert ()")}}</li>
+ </ul>
+ </li>
+ <li>Ada satu larik asosiatif (objek) telah ditentukan, karena pada saat itu kode JavaScript tidak dapat mendefinisikannya sendiri:
+ <ul>
+ <li><code>ProxyConfig.bindings</code> {{obsolete_inline}}</li>
+ </ul>
+ </li>
+</ul>
+
+<div class="note">
+<p><strong>Catatan:</strong> pactester (bagian dari paket <a href="https://github.com/pacparser/pacparser">pacparser</a> ) digunakan untuk menguji contoh sintaks berikut.</p>
+
+<ul>
+ <li>File PAC diberi nama <code>proxy.pac</code></li>
+ <li>Baris perintah: <code>pactester -p ~/pacparser-master/tests/proxy.pac -u http://www.mozilla.org</code>(melewati <code>host</code>parameter <code>www.mozilla.org</code>dan <code>url</code>parameter <code>http://www.mozilla.org</code>)</li>
+</ul>
+</div>
+
+<h3 id="isPlainHostName">isPlainHostName ()</h3>
+
+<h4 id="Sintaksis_2">Sintaksis</h4>
+
+<pre class="syntaxbox notranslate">isPlainHostName(<var>host</var>)</pre>
+
+<h4 id="Parameter_2">Parameter</h4>
+
+<dl>
+ <dt>tuan rumah</dt>
+ <dd>Nama host dari URL (tidak termasuk nomor port).</dd>
+</dl>
+
+<h4 id="Deskripsi_2">Deskripsi</h4>
+
+<p>Benar jika dan hanya jika tidak ada nama domain di nama host (tidak ada titik).</p>
+
+<h4 id="Contoh_2">Contoh</h4>
+
+<pre class="brush: js notranslate">isPlainHostName("www.mozilla.org") // false
+isPlainHostName("www") // true
+</pre>
+
+<h3 id="dnsDomainIs"><code>dnsDomainIs()</code></h3>
+
+<h4 id="Sintaksis_3">Sintaksis</h4>
+
+<pre class="syntaxbox notranslate">dnsDomainIs(<var>host</var>, <var>domain</var>)</pre>
+
+<h4 id="Parameter_3">Parameter</h4>
+
+<dl>
+ <dt>tuan rumah</dt>
+ <dd>Apakah nama host dari URL.</dd>
+ <dt>domain</dt>
+ <dd>Apakah nama domain untuk menguji nama host.</dd>
+</dl>
+
+<h4 id="Deskripsi_3">Deskripsi</h4>
+
+<p>Mengembalikan nilai benar jika dan hanya jika domain nama host cocok.</p>
+
+<h4 id="Contoh_3">Contoh</h4>
+
+<pre class="brush: js notranslate">dnsDomainIs("www.mozilla.org", ".mozilla.org") // true
+dnsDomainIs("www", ".mozilla.org") // false
+</pre>
+
+<h3 id="localHostOrDomainIs">localHostOrDomainIs ()</h3>
+
+<h4 id="Sintaksis_4">Sintaksis</h4>
+
+<pre class="syntaxbox notranslate">localHostOrDomainIs(<var>host</var>, <var>hostdom</var>)</pre>
+
+<h4 id="Parameter_4">Parameter</h4>
+
+<dl>
+ <dt>tuan rumah</dt>
+ <dd>Nama host dari URL.</dd>
+ <dt>tuan rumah</dt>
+ <dd>Nama host yang sepenuhnya memenuhi syarat untuk dicocokkan.</dd>
+</dl>
+
+<h4 id="Deskripsi_4">Deskripsi</h4>
+
+<p>Benar jika nama host <em>sama persis</em> dengan nama host yang ditentukan, atau jika tidak ada bagian nama domain dalam nama host, tetapi nama host yang tidak memenuhi syarat cocok.</p>
+
+<h4 id="Contoh_4">Contoh</h4>
+
+<pre class="brush: js notranslate">localHostOrDomainIs("www.mozilla.org" , "www.mozilla.org") // true (exact match)
+localHostOrDomainIs("www" , "www.mozilla.org") // true (hostname match, domain not specified)
+localHostOrDomainIs("www.google.com" , "www.mozilla.org") // false (domain name mismatch)
+localHostOrDomainIs("home.mozilla.org", "www.mozilla.org") // false (hostname mismatch)</pre>
+
+<h3 id="isResolvable">isResolvable ()</h3>
+
+<h4 id="Sintaksis_5">Sintaksis</h4>
+
+<pre class="syntaxbox notranslate">isResolvable(<var>host</var>)</pre>
+
+<h4 id="Parameter_5">Parameter</h4>
+
+<dl>
+ <dt>tuan rumah</dt>
+ <dd>adalah nama host dari URL.</dd>
+</dl>
+
+<p>Mencoba menyelesaikan nama host. Mengembalikan nilai benar jika berhasil.</p>
+
+<h4 id="Contoh_5">Contoh:</h4>
+
+<pre class="brush: js notranslate">isResolvable("www.mozilla.org") // true
+</pre>
+
+<h3 id="isInNet">isInNet ()</h3>
+
+<h4 id="Sintaksis_6">Sintaksis</h4>
+
+<pre class="syntaxbox notranslate">isInNet(<var>host</var>, <var>pattern</var>, <var>mask</var>)</pre>
+
+<h4 id="Parameter_6">Parameter</h4>
+
+<dl>
+ <dt>tuan rumah</dt>
+ <dd>nama host DNS, atau alamat IP. Jika nama host dilewatkan, itu akan diselesaikan menjadi alamat IP dengan fungsi ini.</dd>
+ <dt>pola</dt>
+ <dd>pola alamat IP dalam format yang dipisahkan titik.</dd>
+ <dt>topeng</dt>
+ <dd>mask untuk pola alamat IP yang menginformasikan bagian mana dari alamat IP yang harus dicocokkan. 0 berarti abaikan, 255 berarti cocok.</dd>
+</dl>
+
+<p>True jika dan hanya jika alamat IP dari host cocok dengan pola alamat IP yang ditentukan.</p>
+
+<p>Spesifikasi pola dan topeng dilakukan dengan cara yang sama seperti untuk konfigurasi SOCKS.</p>
+
+<h4 id="Contoh_6">Contoh:</h4>
+
+<pre class="brush: js notranslate">function alert_eval(str) { alert(str + ' is ' + eval(str)) }
+function FindProxyForURL(url, host) {
+ alert_eval('isInNet(host, "63.245.213.24", "255.255.255.255")')
+ // "PAC-alert: isInNet(host, "63.245.213.24", "255.255.255.255") is true"
+}
+</pre>
+
+<h3 id="dnsResolve">dnsResolve ()</h3>
+
+<pre class="syntaxbox notranslate">dnsResolve(<em>host</em>)</pre>
+
+<h4 id="Parameter_7">Parameter</h4>
+
+<dl>
+ <dt>tuan rumah</dt>
+ <dd>nama host untuk diselesaikan.</dd>
+</dl>
+
+<p>Menyelesaikan nama host DNS yang diberikan menjadi alamat IP, dan mengembalikannya dalam format yang dipisahkan titik sebagai string.</p>
+
+<h4 id="Contoh_7">Contoh</h4>
+
+<pre class="brush: js notranslate">dnsResolve("www.mozilla.org"); // returns the string "104.16.41.2"</pre>
+
+<h3 id="convert_addr">convert_addr ()</h3>
+
+<h4 id="Sintaksis_7">Sintaksis</h4>
+
+<pre class="syntaxbox notranslate">convert_addr(ipaddr)</pre>
+
+<h4 id="Parameter_8">Parameter</h4>
+
+<dl>
+ <dt>ipaddr</dt>
+ <dd>Alamat bertitik apa pun seperti alamat IP atau topeng.</dd>
+</dl>
+
+<p>Menggabungkan empat byte yang dipisahkan titik menjadi satu kata 4-byte dan mengubahnya menjadi desimal.</p>
+
+<h4 id="Contoh_8">Contoh</h4>
+
+<pre class="brush: js notranslate">convert_addr("104.16.41.2"); // returns the decimal number 1745889538</pre>
+
+<h3 id="myIpAddress">myIpAddress ()</h3>
+
+<h4 id="Sintaksis_8">Sintaksis</h4>
+
+<pre class="syntaxbox notranslate">myIpAddress()</pre>
+
+<h4 id="Parameter_9">Parameter</h4>
+
+<p><strong>(tidak ada)</strong></p>
+
+<p>Mengembalikan alamat IP server dari mesin tempat Firefox dijalankan, sebagai string dalam format bilangan bulat yang dipisahkan titik.</p>
+
+<div class="warning">
+<p>myIpAddress () mengembalikan alamat IP yang sama dengan alamat server yang dikembalikan oleh <strong><code>nslookup localhost</code> </strong>mesin Linux. Itu tidak mengembalikan alamat IP publik.</p>
+</div>
+
+<h4 id="Contoh_9">Contoh</h4>
+
+<pre class="brush: js notranslate">myIpAddress() //returns the string "127.0.1.1" if you were running Firefox on that localhost</pre>
+
+<h3 id="dnsDomainLevels">dnsDomainLevels ()</h3>
+
+<h4 id="Sintaksis_9">Sintaksis</h4>
+
+<pre class="syntaxbox notranslate">dnsDomainLevels(<var>host</var>)</pre>
+
+<h4 id="Parameter_10">Parameter</h4>
+
+<dl>
+ <dt>tuan rumah</dt>
+ <dd>adalah nama host dari URL.</dd>
+</dl>
+
+<p>Mengembalikan angka (bilangan bulat) dari level domain DNS (jumlah titik) di nama host.</p>
+
+<h4 id="Contoh_10">Contoh:</h4>
+
+<pre class="brush: js notranslate">dnsDomainLevels("www"); // 0
+dnsDomainLevels("mozilla.org"); // 1
+dnsDomainLevels("www.mozilla.org"); // 2
+</pre>
+
+<h3 id="shExpMatch">shExpMatch ()</h3>
+
+<h4 id="Sintaksis_10">Sintaksis</h4>
+
+<pre class="syntaxbox notranslate">shExpMatch(<var>str</var>, <var>shexp</var>)</pre>
+
+<h4 id="Parameter_11">Parameter</h4>
+
+<dl>
+ <dt>str</dt>
+ <dd>adalah sembarang string untuk dibandingkan (mis. URL, atau nama host).</dd>
+ <dt>shexp</dt>
+ <dd>adalah ekspresi shell untuk dibandingkan.</dd>
+</dl>
+
+<p>Mengembalikan nilai benar jika string cocok dengan ekspresi shell yang ditentukan.</p>
+
+<p><strong>Perhatikan bahwa polanya adalah <em>ekspresi </em><em>shell</em> glob , bukan ekspresi reguler. </strong><code>*</code>dan <code>?</code>selalu didukung, sementara <code>[characters]</code>dan <code>[^characters]</code>didukung oleh beberapa implementasi termasuk Firefox. Ini terutama karena ekspresi diterjemahkan ke RegExp melalui subsitusi <code>[.*?]</code>. Untuk cara yang dapat diandalkan untuk menggunakan sintaks RegExp ini, cukup gunakan RegExp sebagai gantinya.</p>
+
+<h4 id="Contoh_11">Contoh</h4>
+
+<pre class="brush: js notranslate">shExpMatch("http://home.netscape.com/people/ari/index.html" , "*/ari/*"); // returns true
+shExpMatch("http://home.netscape.com/people/montulli/index.html", "*/ari/*"); // returns false</pre>
+
+<h3 id="weekdayRange">weekdayRange ()</h3>
+
+<h4 id="Sintaksis_11">Sintaksis</h4>
+
+<pre class="syntaxbox notranslate">weekdayRange(<var>wd1</var>, <var>wd2</var>, [<var>gmt</var>])</pre>
+
+<div class="note">
+<p><strong>Catatan:</strong> (Sebelum Firefox 49) wd1 harus lebih kecil dari wd2 jika Anda ingin fungsi mengevaluasi parameter ini sebagai rentang. Lihat peringatan di bawah.</p>
+</div>
+
+<h4 id="Parameter_12">Parameter</h4>
+
+<dl>
+ <dt>wd1 dan wd2</dt>
+ <dd>Salah satu string hari kerja yang dipesan:</dd>
+ <dt>
+ <pre class="syntaxbox notranslate">"SUN"|"MON"|"TUE"|"WED"|"THU"|"FRI"|"SAT"</pre>
+ </dt>
+ <dt>waktu Greenwich</dt>
+ <dd>Apakah string "GMT" atau ditinggalkan.</dd>
+</dl>
+
+<p>Hanya parameter pertama yang wajib diisi. Entah yang kedua, ketiga, atau keduanya mungkin ditinggalkan.</p>
+
+<p>Jika hanya satu parameter yang ada, fungsi mengembalikan nilai true pada hari kerja yang diwakili oleh parameter. Jika string "GMT" ditetapkan sebagai parameter kedua, waktu dianggap dalam GMT. Jika tidak, mereka diasumsikan berada dalam zona waktu lokal.</p>
+
+<p>Jika <strong>wd1</strong> dan <strong>wd1</strong> ditentukan, kondisinya benar jika hari kerja saat ini berada di antara dua hari kerja yang <em>dipesan</em> . Batas bersifat inklusif, <em>tetapi batasnya teratur</em> . Jika parameter "GMT" ditentukan, waktu dianggap dalam GMT. Jika tidak, zona waktu lokal digunakan.</p>
+
+<div class="warning">
+<p><strong>Urutan hari penting</strong> ; Sebelum Firefox 49, akan selalu bernilai true. Sekarang hanya akan mengevaluasi benar jika hari ini adalah Rabu atau Minggu.<code>weekdayRange("<em>SUN", "SAT"</em>)</code><code>weekdayRange("<em>WED", "SUN"</em>)</code></p>
+</div>
+
+<h4 id="Contoh_12">Contoh</h4>
+
+<pre class="brush: js notranslate">weekdayRange("MON", "FRI"); // returns true Monday through Friday (local timezone)
+weekdayRange("MON", "FRI", "GMT"); // returns true Monday through Friday (GMT timezone)
+weekdayRange("SAT"); // returns true on Saturdays local time
+weekdayRange("SAT", "GMT"); // returns true on Saturdays GMT time
+weekdayRange("FRI", "MON"); // returns true Friday and Monday only (note, order does matter!)</pre>
+
+<h3 id="dateRange">dateRange()</h3>
+
+<h4 id="Syntax">Syntax</h4>
+
+<pre class="syntaxbox notranslate">dateRange(&lt;day&gt; | &lt;month&gt; | &lt;year&gt;, [gmt]) // ambiguity is resolved by assuming year is greater than 31
+dateRange(&lt;day1&gt;, &lt;day2&gt;, [gmt])
+dateRange(&lt;month1&gt;, &lt;month2&gt;, [gmt])
+dateRange(&lt;year1&gt;, &lt;year2&gt;, [gmt])
+dateRange(&lt;day1&gt;, &lt;month1&gt;, &lt;day2&gt;, &lt;month2&gt;, [gmt])
+dateRange(&lt;month1&gt;, &lt;year1&gt;, &lt;month2&gt;, &lt;year2&gt;, [gmt])
+dateRange(&lt;day1&gt;, &lt;month1&gt;, &lt;year1&gt;, &lt;day2&gt;, &lt;month2&gt;, &lt;year2&gt;, [gmt])</pre>
+
+<div class="note">
+<p><strong>Note:</strong> (Before Firefox 49) day1 must be less than day2, month1 must be less than month2, and year1 must be less than year2 if you want the function to evaluate these parameters as a range. See the warning below.</p>
+</div>
+
+<h4 id="Parameters">Parameters</h4>
+
+<dl>
+ <dt>day</dt>
+ <dd>Is the ordered day of the month between 1 and 31 (as an integer).</dd>
+</dl>
+
+<pre class="syntaxbox notranslate">1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31</pre>
+
+<dl>
+ <dt>month</dt>
+ <dd>Is one of the ordered month strings below.</dd>
+</dl>
+
+<pre class="syntaxbox notranslate">"JAN"|"FEB"|"MAR"|"APR"|"MAY"|"JUN"|"JUL"|"AUG"|"SEP"|"OCT"|"NOV"|"DEC"</pre>
+
+<dl>
+ <dt>year</dt>
+ <dd>Is the ordered full year integer number. For example, 2016 (<strong>not</strong> 16).</dd>
+ <dt>gmt</dt>
+ <dd>Is either the string "GMT", which makes time comparison occur in GMT timezone, or is left out. If left unspecified, times are taken to be in the local timezone.</dd>
+</dl>
+
+<p>Jika hanya satu nilai yang ditentukan (dari setiap kategori: hari, bulan, tahun), fungsi mengembalikan nilai sebenarnya hanya pada hari yang cocok dengan spesifikasi tersebut. Jika kedua nilai ditentukan, hasilnya adalah benar di antara waktu-waktu tersebut, termasuk batas, <em>tetapi batasnya diurutkan</em> .</p>
+
+<div class="warning">
+<p><strong>Urutan hari, bulan, dan tahun penting</strong> ; Sebelum Firefox 49, akan selalu mengevaluasi ke . Sekarang hanya akan mengevaluasi benar jika bulan ini adalah Desember atau Januari.<code>dateRange("<em>JAN", "DEC"</em>)</code><code>true</code><code>dateRange("<em>DEC", "JAN"</em>)</code></p>
+</div>
+
+<h4 id="Contoh_13">Contoh</h4>
+
+<pre class="brush: js notranslate">dateRange(1); // returns true on the first day of each month, local timezone
+dateRange(1, "GMT") // returns true on the first day of each month, GMT timezone
+dateRange(1, 15); // returns true on the first half of each month
+dateRange(24, "DEC"); // returns true on 24th of December each year
+dateRange("JAN", "MAR"); // returns true on the first quarter of the year
+
+dateRange(1, "JUN", 15, "AUG");
+// returns true from June 1st until August 15th, each year
+// (including June 1st and August 15th)
+
+dateRange(1, "JUN", 1995, 15, "AUG", 1995);
+// returns true from June 1st, 1995, until August 15th, same year
+
+dateRange("OCT", 1995, "MAR", 1996);
+// returns true from October 1995 until March 1996
+// (including the entire month of October 1995 and March 1996)
+
+dateRange(1995);
+// returns true during the entire year of 1995
+
+dateRange(1995, 1997);
+// returns true from beginning of year 1995 until the end of year 1997</pre>
+
+<h3 id="rentang_waktu">rentang waktu()</h3>
+
+<h4 id="Sintaksis_12">Sintaksis</h4>
+
+<pre class="syntaxbox notranslate">// The full range of expansions is analogous to dateRange.
+timeRange(&lt;hour1&gt;, &lt;min1&gt;, &lt;sec1&gt;, &lt;hour2&gt;, &lt;min2&gt;, &lt;sec2&gt;, [gmt])</pre>
+
+<div class="note">
+<p><strong>Catatan:</strong> (Sebelum Firefox 49) kategori hour1, min1, sec1 harus kurang dari kategori hour2, min2, sec2 jika Anda ingin fungsi mengevaluasi parameter ini sebagai rentang. Lihat peringatan di bawah.</p>
+</div>
+
+<h4 id="Parameter_13">Parameter</h4>
+
+<dl>
+ <dt>jam</dt>
+ <dd>Adalah jam dari 0 hingga 23. (0 adalah tengah malam, 23 adalah 11 malam.)</dd>
+ <dt>min</dt>
+ <dd>Menit dari 0 hingga 59.</dd>
+ <dt>detik</dt>
+ <dd>Detik dari 0 hingga 59.</dd>
+ <dt>waktu Greenwich</dt>
+ <dd>Baik string "GMT" untuk zona waktu GMT, atau tidak ditentukan, untuk zona waktu lokal.</dd>
+</dl>
+
+<p>Jika hanya satu nilai yang ditentukan (dari setiap kategori: jam, menit, detik), fungsi mengembalikan nilai sebenarnya hanya pada waktu yang sesuai dengan spesifikasi tersebut. Jika kedua nilai ditentukan, hasilnya adalah benar di antara waktu-waktu tersebut, termasuk batas, <em>tetapi batasnya diurutkan</em> .</p>
+
+<div class="warning">
+<p><strong>Urutan jam, menit, materi kedua</strong> ; Sebelum Firefox 49, akan selalu bernilai true. Sekarang hanya akan mengevaluasi benar jika jam saat ini adalah 23:00 atau tengah malam.<code>timeRange(<em>0, 23</em>)</code><code>timeRange(<em>23, 0</em>)</code></p>
+</div>
+
+<h4 id="Contoh_14">Contoh</h4>
+
+<pre class="brush: js notranslate">timerange(12); // returns true from noon to 1pm
+timerange(12, 13); // returns true from noon to 1pm
+timerange(12, "GMT"); // returns true from noon to 1pm, in GMT timezone
+timerange(9, 17); // returns true from 9am to 5pm
+timerange(8, 30, 17, 00); // returns true from 8:30am to 5:00pm
+timerange(0, 0, 0, 0, 0, 30); // returns true between midnight and 30 seconds past midnight</pre>
+
+<h2 id="Contoh_1">Contoh 1</h2>
+
+<h3 id="Gunakan_proxy_untuk_semuanya_kecuali_host_lokal">Gunakan proxy untuk semuanya kecuali host lokal</h3>
+
+<div class="note">
+<p><strong>Catatan:</strong> Karena semua contoh berikut sangat spesifik, mereka belum diuji.</p>
+</div>
+
+<p>All hosts which aren't fully qualified, or the ones that are in local domain, will be connected to directly. Everything else will go through <code>w3proxy.mozilla.org:8080</code>. If the proxy goes down, connections become direct automatically:</p>
+
+<pre class="brush: js notranslate">function FindProxyForURL(url, host) {
+ if (isPlainHostName(host) || dnsDomainIs(host, ".mozilla.org")) {
+ return "DIRECT";
+ } else {
+ return "PROXY w3proxy.mozilla.org:8080; DIRECT";
+ }
+}</pre>
+
+<div class="note">
+<p><strong>Note:</strong> This is the simplest and most efficient autoconfig file for cases where there's only one proxy.</p>
+</div>
+
+<h2 id="Example_2">Example 2</h2>
+
+<h3 id="As_above_but_use_proxy_for_local_servers_which_are_outside_the_firewall">As above, but use proxy for local servers which are outside the firewall</h3>
+
+<p>If there are hosts (such as the main Web server) that belong to the local domain but are outside the firewall and are only reachable through the proxy server, those exceptions can be handled using the <code>localHostOrDomainIs()</code> function:</p>
+
+<pre class="brush: js notranslate">function FindProxyForURL(url, host) {
+ if (
+ (isPlainHostName(host) || dnsDomainIs(host, ".mozilla.org")) &amp;&amp;
+ !localHostOrDomainIs(host, "www.mozilla.org") &amp;&amp;
+ !localHostOrDoaminIs(host, "merchant.mozilla.org")
+ ) {
+ return "DIRECT";
+ } else {
+ return "PROXY w3proxy.mozilla.org:8080; DIRECT";
+ }
+}</pre>
+
+<p>The above example will use the proxy for everything except local hosts in the mozilla.org domain, with the further exception that hosts <code>www.mozilla.org</code> and <code>merchant.mozilla.org</code> will go through the proxy.</p>
+
+<div class="note">
+<p><strong>Note</strong> the order of the above exceptions for efficiency: localHostOrDomainIs() functions only get executed for URLs that are in local domain, not for every URL. Be careful to note the parentheses around the<em> or</em> expression before the <em>and</em> expression to achieve the above-mentioned efficient behaviour.</p>
+</div>
+
+<h2 id="Example_3">Example 3</h2>
+
+<h3 id="Use_proxy_only_if_cannot_resolve_host">Use proxy only if cannot resolve host</h3>
+
+<p>This example will work in an environment where the internal DNS server is set up so that it can only resolve internal host names, and the goal is to use a proxy only for hosts that aren't resolvable:</p>
+
+<pre class="brush: js notranslate">function FindProxyForURL(url, host) {
+ if (isResolvable(host))
+ return "DIRECT";
+ else
+ return "PROXY proxy.mydomain.com:8080";
+}</pre>
+
+<p>The above requires consulting the DNS every time; it can be grouped intelligently with other rules so that DNS is consulted only if other rules do not yield a result:</p>
+
+<pre class="brush: js notranslate">function FindProxyForURL(url, host) {
+ if (
+ isPlainHostName(host) ||
+ dnsDomainIs(host, ".mydomain.com") ||
+ isResolvable(host)
+ ) {
+ return "DIRECT";
+ } else {
+ return "PROXY proxy.mydomain.com:8080";
+ }
+}</pre>
+
+<h2 id="Example_4">Example 4</h2>
+
+<h3 id="Subnet_based_decisions">Subnet based decisions</h3>
+
+<p>In this example all of the hosts in a given subnet are connected-to directly, others are connected through the proxy:</p>
+
+<pre class="brush: js notranslate">function FindProxyForURL(url, host) {
+ if (isInNet(host, "198.95.0.0", "255.255.0.0"))
+ return "DIRECT";
+ else
+ return "PROXY proxy.mydomain.com:8080";
+}</pre>
+
+<p>Again, use of the DNS server in the above can be minimized by adding redundant rules in the beginning:</p>
+
+<pre class="brush: js notranslate">function FindProxyForURL(url, host) {
+ if (
+ isPlainHostName(host) ||
+ dnsDomainIs(host, ".mydomain.com") ||
+ isInNet(host, "198.95.0.0", "255.255.0.0")
+ ) {
+ return "DIRECT";
+ } else {
+ return "PROXY proxy.mydomain.com:8080";
+ }
+}</pre>
+
+<h2 id="Example_5">Example 5</h2>
+
+<h3 id="Load_balancingrouting_based_on_URL_patterns">Load balancing/routing based on URL patterns</h3>
+
+<p>This example is more sophisticated. There are four (4) proxy servers; one of them is a hot stand-by for all of the other ones, so if any of the remaining three goes down the fourth one will take over. Furthermore, the three remaining proxy servers share the load based on URL patterns, which makes their caching more effective (there is only one copy of any document on the three servers - as opposed to one copy on each of them). The load is distributed like this:</p>
+
+<table>
+ <tbody>
+ <tr>
+ <th>Proxy</th>
+ <th>Purpose</th>
+ </tr>
+ <tr>
+ <td>#1</td>
+ <td>.com domain</td>
+ </tr>
+ <tr>
+ <td>#2</td>
+ <td>.edu domain</td>
+ </tr>
+ <tr>
+ <td>#3</td>
+ <td>all other domains</td>
+ </tr>
+ <tr>
+ <td>#4</td>
+ <td>hot stand-by</td>
+ </tr>
+ </tbody>
+</table>
+
+<p>All local accesses are desired to be direct. All proxy servers run on the port 8080 (they don't need to, you can just change your port but remember to modify your configuations on both side). Note how strings can be concatenated with the <code><strong>+</strong></code> operator in JavaScript.</p>
+
+<pre class="brush: js notranslate">function FindProxyForURL(url, host) {
+
+ if (isPlainHostName(host) || dnsDomainIs(host, ".mydomain.com"))
+ return "DIRECT";
+
+ else if (shExpMatch(host, "*.com"))
+ return "PROXY proxy1.mydomain.com:8080; " +
+ "PROXY proxy4.mydomain.com:8080";
+
+ else if (shExpMatch(host, "*.edu"))
+ return "PROXY proxy2.mydomain.com:8080; " +
+ "PROXY proxy4.mydomain.com:8080";
+
+ else
+ return "PROXY proxy3.mydomain.com:8080; " +
+ "PROXY proxy4.mydomain.com:8080";
+}</pre>
+
+<h2 id="Example_6">Example 6</h2>
+
+<h3 id="Setting_a_proxy_for_a_specific_protocol">Setting a proxy for a specific protocol</h3>
+
+<p>Most of the standard JavaScript functionality is available for use in the <code>FindProxyForURL()</code> function. As an example, to set different proxies based on the protocol the {{jsxref("String.prototype.startsWith()", "startsWith()")}} function can be used:</p>
+
+<pre class="brush: js notranslate">function FindProxyForURL(url, host) {
+
+ if (url.startsWith("http:"))
+ return "PROXY http-proxy.mydomain.com:8080";
+
+ else if (url.startsWith("ftp:"))
+ return "PROXY ftp-proxy.mydomain.com:8080";
+
+ else if (url.startsWith(“gopher:"))
+ return "PROXY gopher-proxy.mydomain.com:8080";
+
+ else if (url.startsWith("https:") || url.startsWith("snews:"))
+ return "PROXY security-proxy.mydomain.com:8080";
+
+ else
+ return "DIRECT";
+
+}</pre>
+
+<div class="note">
+<p><strong>Note:</strong> The same can be accomplished using the <code><a href="#shExpMatch">shExpMatch()</a></code> function described earlier.</p>
+</div>
+
+<p>For example:</p>
+
+<pre class="brush: js notranslate">// ...
+if (shExpMatch(url, "http:*")) {
+ return "PROXY http-proxy.mydomain.com:8080";
+}
+// ...</pre>
+
+<div class="note">
+<p>The autoconfig file can be output by a CGI script. This is useful, for example, when making the autoconfig file act differently based on the client IP address (the <code>REMOTE_ADDR</code> environment variable in CGI).</p>
+
+<p>Usage of <code>isInNet()</code>, <code>isResolvable()</code> and <code>dnsResolve()</code> functions should be carefully considered, as they require the DNS server to be consulted. All the other autoconfig-related functions are mere string-matching functions that don't require the use of a DNS server. If a proxy is used, the proxy will perform its DNS lookup which would double the impact on the DNS server. Most of the time these functions are not necessary to achieve the desired result.</p>
+</div>
+
+<h2 id="History_and_implementation">History and implementation</h2>
+
+<p>Proxy auto-config was introduced into Netscape Navigator 2.0 in the late 1990s, at the same time when JavaScript was introduced. Open-sourcing Netscape eventually lead to Firefox itself.</p>
+
+<p>Oleh karena itu, implementasi PAC yang paling "asli" dan pustaka JavaScript-nya <code>nsProxyAutoConfig.js</code>ditemukan di versi awal Firefox. Utilitas ini ditemukan di banyak sistem sumber terbuka lainnya termasuk <a href="https://cs.chromium.org/chromium/src/services/proxy_resolver/pac_js_library.h">Chromium</a> . Firefox kemudian mengintegrasikan file tersebut menjadi <code><a href="https://dxr.mozilla.org/mozilla-central/source/netwerk/base/ProxyAutoConfig.cpp">ProxyAutoConfig.cpp</a></code>literal string C ++. Untuk mengekstraknya ke dalam filenya sendiri, cukup dengan menyalin potongan ke JavaScript dengan <code>console.log</code>perintah untuk mencetaknya.</p>
+
+<p>Microsoft secara umum membuat implementasinya sendiri. Dulu ada <a href="https://en.wikipedia.org/wiki/Proxy_auto-config#Old_Microsoft_problems">beberapa masalah dengan pustaka mereka</a> , tetapi sebagian besar telah diselesaikan sekarang. Mereka telah mendefinisikan <a href="https://docs.microsoft.com/en-us/windows/win32/winhttp/ipv6-extensions-to-navigator-auto-config-file-format">beberapa fungsi sufiks "Ex" baru di</a> sekitar bagian penanganan alamat untuk mendukung IPv6. Fitur ini didukung oleh Chromium, tetapi belum didukung oleh Firefox ( <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=558253">bugzilla # 558253</a> ).</p>
diff --git a/files/id/web/http/status/100/index.html b/files/id/web/http/status/100/index.html
new file mode 100644
index 0000000000..3f2f0db1d2
--- /dev/null
+++ b/files/id/web/http/status/100/index.html
@@ -0,0 +1,46 @@
+---
+title: 100 Continue
+slug: Web/HTTP/Status/100
+tags:
+ - HTTP
+ - Informasi
+ - Status code
+translation_of: Web/HTTP/Status/100
+---
+<div>{{HTTPSidebar}}</div>
+
+<p>HTTP <strong><code>100 Continue</code></strong> menginformasikan status kode respon yang menandakan bahwa semuanya OK dan klien dapat melanjutkan dengan permintaan atau mengabaikan jika telah terselesaikan.</p>
+
+<p>Untuk bisa mendapatkan server check pada header permintaan, klien harus mengirim <code>Expect: 100-continue</code> sebagai header pada permintaan inisial dan mendapatan kode status respon <code>100 Continue</code> sebelum mengirim konten atau body.</p>
+
+<h2 id="Status">Status</h2>
+
+<pre class="syntaxbox">100 Continue</pre>
+
+<h2 id="Spesifikasi">Spesifikasi</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">Spesifikasi</th>
+ <th scope="col">Title</th>
+ </tr>
+ <tr>
+ <td>{{RFC("7231", "100 Continue" , "6.2.1")}}</td>
+ <td>Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Kompabilitas_Browser">Kompabilitas Browser</h2>
+
+<p class="hidden">Tabel kompabilitas di halaman ini didapatkan dari struktur data. Jika anda ingin berkontribusi, silahkan kunjungi <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> dan kirimkan kami sebuah pull request.</p>
+
+<p>{{Compat("http/status", "100")}}</p>
+
+<h2 id="Lihat_Juga">Lihat Juga</h2>
+
+<ul>
+ <li>{{HTTPHeader("Expect")}}</li>
+ <li>{{HTTPStatus(417)}}</li>
+</ul>
diff --git a/files/id/web/http/status/200/index.html b/files/id/web/http/status/200/index.html
new file mode 100644
index 0000000000..76c06a3e1e
--- /dev/null
+++ b/files/id/web/http/status/200/index.html
@@ -0,0 +1,50 @@
+---
+title: 200 OK
+slug: Web/HTTP/Status/200
+translation_of: Web/HTTP/Status/200
+---
+<div>{{HTTPSidebar}}</div>
+
+<p>HTTP <strong><code>200 OK</code></strong> respon status sukses merupakan kode respon yang menandakan bahwa request sukses. respon 200 dapat dichace secara default.</p>
+
+<p>Arti dari sukses tergantung pada fungsi request HTTP:</p>
+
+<ul>
+ <li>{{HTTPMethod("GET")}}: Resource telah di ambil dan ditransmisikan ke pesan body.</li>
+ <li>{{HTTPMethod("HEAD")}}: Entity headers ada di pesan body.</li>
+ <li>{{HTTPMethod("POST")}}: Resource mendeskripsikan hasil dari aksi yang ditransamisikan ke pesan body.</li>
+ <li>{{HTTPMethod("TRACE")}}: Pesan body berisi pesan request seperti yang diterima oleh server.</li>
+</ul>
+
+<p>Kesuksesan hasil dari {{HTTPMethod("PUT")}} atau {{HTTPMethod("DELETE")}} biasanya bukan <code>200</code> <code>OK</code> tapi {{HTTPStatus("204")}} <code>No Content</code> (atau {{HTTPStatus("201")}} <code>Created</code> ketika resource diunggah pertama kali).</p>
+
+<h2 id="Status">Status</h2>
+
+<pre class="syntaxbox">200 OK</pre>
+
+<h2 id="Spesifikasi">Spesifikasi</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">Spesifikasi</th>
+ <th scope="col">Judul</th>
+ </tr>
+ <tr>
+ <td>{{RFC("7231", "200 OK" , "6.3.1")}}</td>
+ <td>Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Kompabilitas_Browser">Kompabilitas Browser</h2>
+
+<p class="hidden">Tabel kompabilitas di halaman ini adalah hasil dari structured data. Jika anda ingin berkontribusi, silakan cek <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> dan kirimkan kami pull request.</p>
+
+<p>{{Compat("http.status.200")}}</p>
+
+<h2 id="Lihat_Juga">Lihat Juga</h2>
+
+<ul>
+ <li><a href="/en-US/docs/Web/HTTP/Methods">HTTP request methods</a></li>
+</ul>
diff --git a/files/id/web/http/status/400/index.html b/files/id/web/http/status/400/index.html
new file mode 100644
index 0000000000..3d98750338
--- /dev/null
+++ b/files/id/web/http/status/400/index.html
@@ -0,0 +1,39 @@
+---
+title: 400 Bad Request
+slug: Web/HTTP/Status/400
+tags:
+ - Galat Klien
+ - HTTP
+ - Kode status
+ - Referensi
+ - Status kode HTTP
+translation_of: Web/HTTP/Status/400
+---
+<div>{{HTTPSidebar}}</div>
+
+<p>Kode Respon HTTP <code><strong>400 Bad Request</strong></code> mengindikasikan bahwa server tidak bisa atau tidak akan memproses permintaan karena sesuatu yang dianggap sebagai kesalahan klien (seperti sintaks permintaan yang jelek, pesan request yang tidak valid, atau permintaan yang menipu.</p>
+
+<div class="warning">
+<p>Klien seharusnya tidak mengulangi permintaan yang sama tanpa perubahan.</p>
+</div>
+
+<h2 id="Status">Status</h2>
+
+<pre class="syntaxbox">400 Bad Request </pre>
+
+<h2 id="Spesifikasi">Spesifikasi</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">Specification</th>
+ <th scope="col">Title</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{RFC("7231", "400 Bad Request" , "6.5.1")}}</td>
+ <td>Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content</td>
+ </tr>
+ </tbody>
+</table>
diff --git a/files/id/web/http/status/403/index.html b/files/id/web/http/status/403/index.html
new file mode 100644
index 0000000000..71dc858a2f
--- /dev/null
+++ b/files/id/web/http/status/403/index.html
@@ -0,0 +1,56 @@
+---
+title: 403 Forbidden
+slug: Web/HTTP/Status/403
+tags:
+ - Galat Klien
+ - HTTP
+ - Kode status
+ - Referensi
+translation_of: Web/HTTP/Status/403
+---
+<div>{{HTTPSidebar}}</div>
+
+<p>Kode respon HTTP <strong><code>403 Forbidden</code></strong> mengindikasikan bahwa server memahami permintaan tetapi menolak untuk mengesahkannya.</p>
+
+<p>Kode status ini mirip dengan {{HTTPStatus("401")}}, tetapi dalam kasus ini, autentikasi ulang tidak akan memberi perubahan. Aksesnya dilarang secara permanen dan diikat pada logika aplikasi, seperti kurangnya hak akses untuk mendapatkan sumber daya.</p>
+
+<h2 id="Status">Status</h2>
+
+<pre class="syntaxbox">403 Forbidden</pre>
+
+<h2 id="Contoh_respon">Contoh respon</h2>
+
+<pre>HTTP/1.1 403 Forbidden
+Date: Wed, 21 Oct 2015 07:28:00 GMT
+</pre>
+
+<h2 id="Spesifikasi">Spesifikasi</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">Specification</th>
+ <th scope="col">Title</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{RFC("7231", "403 Forbidden" , "6.5.3")}}</td>
+ <td>HTTP/1.1: Semantics and Content</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Dukungan_peramban">Dukungan peramban</h2>
+
+<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p>
+
+<p>{{Compat("http.status.403")}}</p>
+
+<h2 id="Lihat_juga">Lihat juga</h2>
+
+<ul>
+ <li>{{HTTPStatus("401")}}</li>
+ <li><a href="https://kinsta.com/blog/403-forbidden-error/">403 forbidden error</a></li>
+ <li><a href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html" rel="noopener">HTTP/1.1: Status Code Definitions</a></li>
+</ul>
diff --git a/files/id/web/http/status/404/index.html b/files/id/web/http/status/404/index.html
new file mode 100644
index 0000000000..10c1e4e0a5
--- /dev/null
+++ b/files/id/web/http/status/404/index.html
@@ -0,0 +1,63 @@
+---
+title: 404 Not Found
+slug: Web/HTTP/Status/404
+tags:
+ - Galat Klien
+ - HTTP
+ - Kode status
+ - Peramban
+translation_of: Web/HTTP/Status/404
+---
+<div>{{HTTPSidebar}}</div>
+
+<p>Kode respon HTTP <code><strong>404 Not Found</strong></code> mengindikasikan bahwa server tidak dapat menemukan sumber daya yang diminta. Link yang menuju halaman 404 biasanya disebut dengan <em>broken</em> atau <em>dead links</em>, dan bisa menjadi subjek kepada <a href="https://en.wikipedia.org/wiki/Link_rot">link rot</a>.</p>
+
+<p>Status kode 404 tidak mengindikasikan bahwa sumber daya tidak ditemukan sementara atau secara permanen. Apabila sumber daya dihapus secara permanen, {{HTTPStatus("410")}} (Gone) harus digunakan dibandingkan status 404.</p>
+
+<h2 id="Status">Status</h2>
+
+<pre class="syntaxbox">404 Not Found</pre>
+
+<h2 id="Halaman_galat_khusus">Halaman galat khusus</h2>
+
+<p>Banyak web sites menyesuaikan tampilan dari halaman 404 supaya lebih membantu pengguna dan memberikan petunjuk apa yang harus dilakukan seterusnya. Server Apache dapat dikonfigurasi dengan file <code>.htaccess</code> dengan potongan kode berikut.</p>
+
+<pre class="brush: bash">ErrorDocument 404 /notfound.html</pre>
+
+<p>Untuk contoh dari halaman 404 khusus, lihat <a href="https://developer.mozilla.org/en-US/404">Halaman 404 MDN</a>.</p>
+
+<div class="note">
+<p>Desain khusus merupakan hal yang baik. Buat halaman 404 Anda menjadi lucu dan manusiawi, tetapi jangan membuat bingung pengguna.</p>
+</div>
+
+<h2 id="Spesifikasi">Spesifikasi</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">Specification</th>
+ <th scope="col">Title</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{RFC("7231", "404 Not Found" , "6.5.4")}}</td>
+ <td>Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Dukungan_Peramban">Dukungan Peramban</h2>
+
+<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p>
+
+<p>{{Compat("http.status.404")}}</p>
+
+<h2 id="Lihat_Juga">Lihat Juga</h2>
+
+<ul>
+ <li>{{HTTPStatus("410")}}</li>
+ <li>
+ <p>{{interwiki("wikipedia", "HTTP_404", "Wikipedia: HTTP 404")}}</p>
+ </li>
+</ul>
diff --git a/files/id/web/http/status/405/index.html b/files/id/web/http/status/405/index.html
new file mode 100644
index 0000000000..651db0f858
--- /dev/null
+++ b/files/id/web/http/status/405/index.html
@@ -0,0 +1,44 @@
+---
+title: 405 Metode tidak Diizinkan
+slug: Web/HTTP/Status/405
+tags:
+ - Galat Klien
+ - HTTP
+ - Referensi
+ - Status kode
+ - Status kode HTTP
+translation_of: Web/HTTP/Status/405
+---
+<div>{{HTTPSidebar}}</div>
+
+<p>Kode respon HTTP <code><strong>405 Method Not Allowed</strong></code> mengindikasikan bahwa metode permintaan dikenali oleh server tetapi tidak didukung oleh target sumber daya. <span style="">Server harus menyematkan </span><strong style=""><code>Allow</code></strong><span style=""> header field di dalam respon 405 berisi daftar dari metode permintaan yang didukung oleh target sumber daya.</span></p>
+
+<h2 id="Status">Status</h2>
+
+<pre class="syntaxbox">405 Method Not Allowed</pre>
+
+<h2 id="Spesifikasi">Spesifikasi</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">Specification</th>
+ <th scope="col">Title</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{RFC("7231", "405 Method Not Allowed" , "6.5.5")}}</td>
+ <td>Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Lihat_juga">Lihat juga</h2>
+
+<ul>
+ <li>{{HTTPHeader("Allow")}}</li>
+ <li><a href="https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html" rel="noopener">HTTP/1.1: Status Code Definitions</a></li>
+ <li><a href="https://kinsta.com/blog/405-method-not-allowed-error/">How to Fix 405 Method Not Allowed</a></li>
+ <li><a href="https://docs.microsoft.com/en-us/aspnet/web-api/overview/testing-and-debugging/troubleshooting-http-405-errors-after-publishing-web-api-applications">Troubleshooting HTTP 405</a></li>
+</ul>
diff --git a/files/id/web/http/status/410/index.html b/files/id/web/http/status/410/index.html
new file mode 100644
index 0000000000..42ac089598
--- /dev/null
+++ b/files/id/web/http/status/410/index.html
@@ -0,0 +1,54 @@
+---
+title: 410 Gone
+slug: Web/HTTP/Status/410
+tags:
+ - Galat Klien
+ - HTTP
+ - Kode status
+ - Referensi
+translation_of: Web/HTTP/Status/410
+---
+<div>{{HTTPSidebar}}</div>
+
+<p>Kode respon HTTP <code><strong>410 Gone</strong></code> mengindikasikan bahwa akses ke sumber daya tidak lagi tersedia di server asal dengan kondisi akan tidak tersedia secara permanen.</p>
+
+<p>Apabila Anda tidak tahu apakah kondisi ini hanya sementara atau permanen, kode error {{HTTPStatus(404)}} sebaiknya digunakan.</p>
+
+<div class="note">
+<p><strong>Catatan:</strong> Sebuah respon 410 dapat disimpan di dalam cache secara bawaan.</p>
+</div>
+
+<h2 id="Status">Status</h2>
+
+<pre class="syntaxbox">410 Gone</pre>
+
+<h2 id="Spesifikasi">Spesifikasi</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">Specification</th>
+ <th scope="col">Title</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{RFC("7231", "410 Gone" , "6.5.9")}}</td>
+ <td>Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Dukungan_Peramban">Dukungan Peramban</h2>
+
+<p>The information shown below has been pulled from MDN's GitHub (<a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a>).</p>
+
+<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p>
+
+<p>{{Compat("http.status.410")}}</p>
+
+<h2 id="Lihat_Juga">Lihat Juga</h2>
+
+<ul>
+ <li>{{HTTPStatus(404)}}</li>
+</ul>
diff --git a/files/id/web/http/status/500/index.html b/files/id/web/http/status/500/index.html
new file mode 100644
index 0000000000..ce5c5157fb
--- /dev/null
+++ b/files/id/web/http/status/500/index.html
@@ -0,0 +1,38 @@
+---
+title: 500 Internal Server Error
+slug: Web/HTTP/Status/500
+translation_of: Web/HTTP/Status/500
+---
+<div>{{HTTPSidebar}}</div>
+
+<p>HTTP <span id="result_box" lang="id"><span>kode respons kesalahan server menunjukkan bahwa server mengalami kondisi tak terduga yang menghalanginya memenuhi permintaan.</span></span></p>
+
+<p><span id="result_box" lang="id"><span>Respons kesalahan ini adalah turunan "mencakup-semua" respons.</span> <span>Seringkali respons server pengelola catatan seperti kode status 500 dengan lebih banyak detail tentang permintaan untuk mencegah kesalahan terjadi lagi di masa mendatang.</span></span></p>
+
+<h2 id="Status">Status</h2>
+
+<pre class="syntaxbox notranslate">500 <span style="">Kesalahan Server dari Dalam</span>
+</pre>
+
+<h2 id="Specifications">Specifications</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <th scope="col">Specification</th>
+ <th scope="col">Title</th>
+ </tr>
+ <tr>
+ <td>{{RFC("7231", "" , "6.6.1")}}</td>
+ <td>Protokol Transfer Hiperteks (HTTP / 1.1): Semantik dan Konten</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Kompatibilias_browser">Kompatibilias browser</h2>
+
+<p class="hidden">Informasi yang ditampilkan di bawah ini telah ditarik dari GitHub MDN (https://github.com/mdn/browes-compat-data).</p>
+
+<p class="hidden">Table kompatibilitas di halaman dari data terstruktur Jla Anda ongin berkontribusi pada data, ;ohat https://github.com/mdnbrowser-compat-data dan kirimkan permintaan pull kepada kami.</p>
+
+<p>{{Compat("http.status.500")}}</p>
diff --git a/files/id/web/http/status/index.html b/files/id/web/http/status/index.html
new file mode 100644
index 0000000000..066d40771e
--- /dev/null
+++ b/files/id/web/http/status/index.html
@@ -0,0 +1,141 @@
+---
+title: HTTP response status codes
+slug: Web/HTTP/Status
+translation_of: Web/HTTP/Status
+---
+<div>{{HTTPSidebar}}</div>
+
+<p>kode status respon <a href="/en-US/docs/Web/HTTP">HTTP</a> menunjukkan apakah permintaan HTTP tertentu telah berhasil diselesaikan. Tanggapan dikelompokkan dalam lima kelas: tanggapan informasi, tanggapan yang sukses, pengalihan, kesalahan klien, dan server kesalahan.</p>
+
+<h2 id="Respon_informasi">Respon informasi</h2>
+
+<dl>
+ <dt>{{HTTPStatus(100, "100 Continue")}}</dt>
+ <dd>Tanggapan sementara ini menunjukkan bahwa segala sesuatu sejauh ini adalah OK dan bahwa klien harus melanjutkan dengan permintaan atau mengabaikannya jika sudah selesai.</dd>
+ <dt>{{HTTPStatus(101, "101 Switching Protocol")}}</dt>
+ <dd>Kode ini dikirim sebagai tanggapan ke header permintaan {{HTTPHeader ("Upgrade")}} oleh klien, dan menunjukkan protokol yang digunakan oleh server.</dd>
+ <dt>{{HTTPStatus(102, "102 Processing")}} ({{Glossary("WebDAV")}})</dt>
+ <dd>Kode ini menunjukkan bahwa server telah menerima dan memproses permintaan, tetapi belum ada respons.</dd>
+</dl>
+
+<h2 id="Response_Sukses">Response Sukses</h2>
+
+<dl>
+ <dt>{{HTTPStatus(200, "200 OK")}}</dt>
+ <dd>Permintaan telah berhasil . Arti keberhasilan bervariasi tergantung pada metode HTTP :<br>
+ GET: The resource has been fetched and is transmitted in the message body.<br>
+ HEAD: The entity headers are in the message body.<br>
+ POST: The resource describing the result of the action is transmitted in the message body.<br>
+ TRACE: The message body contains the request message as received by the server</dd>
+ <dt>{{HTTPStatus(201, "201 Created")}}</dt>
+ <dd>The request has succeeded and a new resource has been created as a result of it. This is typically the response sent after a PUT request.</dd>
+ <dt>{{HTTPStatus(202, "202 Accepted")}}</dt>
+ <dd>The request has been received but not yet acted upon. It is non-committal, meaning that there is no way in HTTP to later send an asynchronous response indicating the outcome of processing the request. It is intended for cases where another process or server handles the request, or for batch processing.</dd>
+ <dt>{{HTTPStatus(203, "203 Non-Authoritative Information")}}</dt>
+ <dd>This response code means returned meta-information set is not exact set as available from the origin server, but collected from a local or a third party copy. Except this condition, 200 OK response should be preferred instead of this response.</dd>
+ <dt>{{HTTPStatus(204, "204 No Content")}}</dt>
+ <dd>There is no content to send for this request, but the headers may be useful. The user-agent may update its cached headers for this resource with the new ones.</dd>
+ <dt>{{HTTPStatus(205, "205 Reset Content")}}</dt>
+ <dd>This response code is sent after accomplishing request to tell user agent reset document view which sent this request.</dd>
+ <dt>{{HTTPStatus(206, "206 Partial Content")}}</dt>
+ <dd>This response code is used because of range header sent by the client to separate download into multiple streams.</dd>
+</dl>
+
+<h2 id="Redirection_messages">Redirection messages</h2>
+
+<dl>
+ <dt>{{HTTPStatus(300, "300 Multiple Choice")}}</dt>
+ <dd>The request has more than one possible responses. User-agent or user should choose one of them. There is no standardized way to choose one of the responses.</dd>
+ <dt>{{HTTPStatus(301, "301 Moved Permanently")}}</dt>
+ <dd>This response code means that URI of requested resource has been changed. Probably, new URI would be given in the response.</dd>
+ <dt>{{HTTPStatus(302, "302 Found")}}</dt>
+ <dd>This response code means that URI of requested resource has been changed <em>temporarily</em>. New changes in the URI might be made in the future. Therefore, this same URI should be used by the client in future requests.</dd>
+ <dt>{{HTTPStatus(303, "303 See Other")}}</dt>
+ <dd>Server sent this response to directing client to get requested resource to another URI with an GET request.</dd>
+ <dt>{{HTTPStatus(304, "304 Not Modified")}}</dt>
+ <dd>This is used for caching purposes. It is telling to client that response has not been modified. So, client can continue to use same cached version of response.</dd>
+ <dt>{{HTTPStatus(305, "305 Use Proxy")}}</dt>
+ <dd>This means requested response must be accessed by a proxy. This response code is not largely supported because security reasons.</dd>
+ <dt>{{HTTPStatus(306, "306 unused")}}</dt>
+ <dd>This response code is no longer used, it is just reserved currently. It was used in a previous version of the HTTP 1.1 specification.</dd>
+ <dt>{{HTTPStatus(307, "307 Temporary Redirect")}}</dt>
+ <dd>Server sent this response to directing client to get requested resource to another URI with same method that used prior request. This has the same semantic than the <code>302 Found</code> HTTP response code, with the exception that the user agent <em>must not</em> change the HTTP method used: if a <code>POST</code> was used in the first request, a <code>POST</code> must be used in the second request.</dd>
+ <dt>{{HTTPStatus(308, "308 Permanent Redirect")}}</dt>
+ <dd>This means that the resource is now permanently located at another URI, specified by the <code>Location:</code> HTTP Response header. This has the same semantics as the <code>301 Moved Permanently</code> HTTP response code, with the exception that the user agent <em>must not</em> change the HTTP method used: if a <code>POST</code> was used in the first request, a <code>POST</code> must be used in the second request.</dd>
+</dl>
+
+<h2 id="Client_error_responses">Client error responses</h2>
+
+<dl>
+ <dt>{{HTTPStatus(400, "400 Bad Request")}}</dt>
+ <dd>Respons ini berarti server tidak dapat memahami permintaan karena sintaks yang tidak valid.</dd>
+ <dt>{{HTTPStatus(401, "401 Unauthorized")}}</dt>
+ <dd>Authentication is needed to get requested response. This is similar to 403, but in this case, authentication is possible.</dd>
+ <dt>{{HTTPStatus(402, "402 Payment Required")}}</dt>
+ <dd>This response code is reserved for future use. Initial aim for creating this code was using it for digital payment systems however this is not used currently.</dd>
+ <dt>{{HTTPStatus(403, "403 Forbidden")}}</dt>
+ <dd>Client does not have access rights to the content so server is rejecting to give proper response.</dd>
+ <dt>{{HTTPStatus(404, "404 Not Found")}}</dt>
+ <dd>Server can not find requested resource. This response code probably is most famous one due to its frequency to occur in web.</dd>
+ <dt>{{HTTPStatus(405, "405 Method Not Allowed")}}</dt>
+ <dd>The request method is known by the server but has been disabled and cannot be used. The two mandatory methods, <code>GET</code> and <code>HEAD</code>, must never be disabled and should not return this error code.</dd>
+ <dt>{{HTTPStatus(406, "406 Not Acceptable")}}</dt>
+ <dd>This response is sent when the web server, after performing <a href="/en-US/docs/HTTP/Content_negotiation#Server-driven_negotiation">server-driven content negotiation</a>, doesn't find any content following the criteria given by the user agent.</dd>
+ <dt>{{HTTPStatus(407, "407 Proxy Authentication Required")}}</dt>
+ <dd>This is similar to 401 but authentication is needed to be done by a proxy.</dd>
+ <dt>{{HTTPStatus(408, "408 Request Timeout")}}</dt>
+ <dd>This response is sent on an idle connection by some servers, even without any previous request by the client. It means that the server would like to shut down this unused connection. This response is used much more since some browsers, like Chrome or IE9, use <a class="external" href="http://www.belshe.com/2011/02/10/the-era-of-browser-preconnect/" title="http://www.belshe.com/2011/02/10/the-era-of-browser-preconnect/">HTTP preconnection mechanisms</a> to speed up surfing (see {{ bug(634278) }}, which tracks the future implementation of such a mechanism in Firefox). Also note that some servers merely shut down the connection without sending this message.</dd>
+ <dt>{{HTTPStatus(409, "409 Conflict")}}</dt>
+ <dd>This response would be sent when a request conflict with current state of server.</dd>
+ <dt>{{HTTPStatus(410, "410 Gone")}}</dt>
+ <dd>This response would be sent when requested content has been deleted from server.</dd>
+ <dt>{{HTTPStatus(411, "411 Length Required")}}</dt>
+ <dd>Server rejected the request because the <code>Content-Length</code> header field is not defined and the server requires it.</dd>
+ <dt>{{HTTPStatus(412, "412 Precondition Failed")}}</dt>
+ <dd>The client has indicated preconditions in its headers which the server does not meet.</dd>
+ <dt>{{HTTPStatus(413, "413 Payload Too Large")}}</dt>
+ <dd>Request entity is larger than limits defined by server; the server might close the connection or return an <code>Retry-After</code> header field.</dd>
+ <dt>{{HTTPStatus(414, "414 URI Too Long")}}</dt>
+ <dd>The URI requested by the client is longer than the server is willing to interpret.</dd>
+ <dt>{{HTTPStatus(415, "415 Unsupported Media Type")}}</dt>
+ <dd>The media format of the requested data is not supported by the server, so the server is rejecting the request.</dd>
+ <dt>{{HTTPStatus(416, "416 Requested Range Not Satisfiable")}}</dt>
+ <dd>The range specified by the <code>Range</code> header field in the request can't be fulfilled; it's possible that the range is outside the size of the target URI's data.</dd>
+ <dt>{{HTTPStatus(417, "417 Expectation Failed")}}</dt>
+ <dd>This response code means the expectation indicated by the <code>Expect</code> request header field can't be met by the server.</dd>
+ <dt>{{HTTPStatus(421, "421 Misdirected Request")}}</dt>
+ <dd>The request was directed at a server that is not able to produce a response. This can be sent by a server that is not configured to produce responses for the combination of scheme and authority that are included in the request URI.</dd>
+ <dt>{{HTTPStatus(426, "426 Upgrade Required")}}</dt>
+ <dd>The server refuses to perform the request using the current protocol but might be willing to do so after the client upgrades to a different protocol. The server MUST send an Upgrade header field in a 426 response to indicate the required protocol(s) (<a href="https://tools.ietf.org/html/rfc7230#section-6.7">Section 6.7 of [RFC7230]</a>).</dd>
+ <dt>{{HTTPStatus(428, "428 Precondition Required")}}</dt>
+ <dd>The origin server requires the request to be conditional. Intended to prevent "the 'lost update' problem, where a client GETs a resource's state, modifies it, and PUTs it back to the server, when meanwhile a third party has modified the state on the server, leading to a conflict.</dd>
+ <dt>{{HTTPStatus(429, "429 Too Many Requests")}}</dt>
+ <dd>The user has sent too many requests in a given amount of time ("rate limiting").</dd>
+ <dt>{{HTTPStatus(431, "431 Request Header Fields Too Large")}}</dt>
+ <dd>The server is unwilling to process the request because its header fields are too large. The request MAY be resubmitted after reducing the size of the request header fields.</dd>
+ <dt>{{HTTPStatus(451, "451 Unavailable For Legal Reasons")}}</dt>
+ <dd>The user requests an illegal resource, such as a web page censored by a government.</dd>
+</dl>
+
+<h2 id="Server_error_responses">Server error responses</h2>
+
+<dl>
+ <dt>{{HTTPStatus(500, "500 Internal Server Error")}}</dt>
+ <dd>The server has encountered a situation it doesn't know how to handle.</dd>
+ <dt>{{HTTPStatus(501, "501 Not Implemented")}}</dt>
+ <dd>The request method is not supported by the server and cannot be handled. The only methods that servers are required to support (and therefore that must not return this code) are <code>GET</code> and <code>HEAD</code>.</dd>
+ <dt>{{HTTPStatus(502, "502 Bad Gateway")}}</dt>
+ <dd>This error response means that the server, while working as a gateway to get a response needed to handle the request, got an invalid response.</dd>
+ <dt>{{HTTPStatus(503, "503 Service Unavailable")}}</dt>
+ <dd>The server is not ready to handle the request. Common causes are a server that is down for maintenance or that is overloaded. Note that together with this response, a user-friendly page explaining the problem should be sent. This responses should be used for temporary conditions and the <code>Retry-After:</code> HTTP header should, if possible, contain the estimated time before the recovery of the service. The webmaster must also take care about the caching-related headers that are sent along with this response, as these temporary condition responses should usually not be cached.</dd>
+ <dt>{{HTTPStatus(504, "504 Gateway Timeout")}}</dt>
+ <dd>This error response is given when the server is acting as a gateway and cannot get a response in time.</dd>
+ <dt>{{HTTPStatus(505, "505 HTTP Version Not Supported")}}</dt>
+ <dd>The HTTP version used in the request is not supported by the server.</dd>
+ <dt>{{HTTPStatus(506, "506 Variant Also Negotiates")}}</dt>
+ <dd>The server has an internal configuration error: transparent content negotiation for the request results in a circular reference.</dd>
+ <dt>{{HTTPStatus(507, "507 Variant Also Negotiates")}}</dt>
+ <dd>The server has an internal configuration error: the chosen variant resource is configured to engage in transparent content negotiation itself, and is therefore not a proper end point in the negotiation process.</dd>
+ <dt>{{HTTPStatus(511, "511 Network Authentication Required")}}</dt>
+ <dd>The 511 status code indicates that the client needs to authenticate to gain network access.</dd>
+</dl>