`session` 모듈은 새로운 `Session` 객체를 만드는데 사용할 수 있습니다.
-또한 존재하는 [`BrowserWindow`](browser-window.md)의
-[`webContents`](web-contents.md)에서 `session` 속성으로 접근할 수도 있습니다.
+또한 [`WebContents`](web-contents.md)의 `session` 속성이나 `session` 모듈을 통해 현재 존재하는 페이지의 `session`에 접근할 수 있습니다.
```javascript
-const {BrowserWindow} = require('electron');
+const {session, BrowserWindow} = require('electron')
-let win = new BrowserWindow({width: 800, height: 600});
-win.loadURL('http://github.com');
+let win = new BrowserWindow({width: 800, height: 600})
+win.loadURL('http://github.com')
-let ses = win.webContents.session;
+let ses = win.webContents.session
```
## Methods
### Instance Methods
-`Session` 객체는 다음과 같은 메서드와 속성을 가지고 있습니다:
-
-#### `ses.cookies`
-
-`cookies` 속성은 쿠키를 조작하는 방법을 제공합니다. 예를 들어 다음과 같이 할 수
-있습니다:
-
-```javascript
-// 모든 쿠키를 요청합니다.
-session.defaultSession.cookies.get({}, (error, cookies) => {
- console.log(cookies);
-});
-
-// url에 관련된 쿠키를 모두 가져옵니다.
-session.defaultSession.cookies.get({url: 'http://www.github.com'}, (error, cookies) => {
- console.log(cookies);
-});
-
-// 지정한 쿠키 데이터를 설정합니다.
-// 동일한 쿠키가 있으면 해당 쿠키를 덮어씁니다.
-const cookie = {url: 'http://www.github.com', name: 'dummy_name', value: 'dummy'};
-session.defaultSession.cookies.set(cookie, (error) => {
- if (error)
- console.error(error);
-});
-```
-
-#### `ses.cookies.get(filter, callback)`
-
-* `filter` Object
- * `url` String (optional) - `url`에 해당하는 쿠키를 취득합니다. 이 속성을
- 생략하면 모든 url에서 찾습니다.
- * `name` String (optional) - 쿠키의 이름입니다.
- * `domain` String (optional) - 도메인 또는 서브 도메인에 일치하는 쿠키를
- 취득합니다.
- * `path` String (optional) - `path`에 일치하는 쿠키를 취득합니다.
- * `secure` Boolean (optional) - 보안 속성에 따라 쿠키를 필터링합니다.
- * `session` Boolean (optional) - 세션 또는 지속성 쿠키를 필터링합니다.
-* `callback` Function
-
-`details` 객체에서 묘사한 모든 쿠키를 요청합니다. 모든 작업이 끝나면 `callback`이
-`callback(error, cookies)` 형태로 호출됩니다.
-
-`cookies`는 `cookie` 객체의 배열입니다.
-
-* `cookie` Object
- * `name` String - 쿠키의 이름.
- * `value` String - 쿠키의 값.
- * `domain` String - 쿠키의 도메인.
- * `hostOnly` String - 쿠키가 호스트 전용인가에 대한 여부.
- * `path` String - 쿠키의 경로.
- * `secure` Boolean - 쿠키가 안전한 것으로 표시되는지에 대한 여부.
- * `httpOnly` Boolean - 쿠키가 HTTP로만 표시되는지에 대한 여부.
- * `session` Boolean - 쿠키가 세션 쿠키 또는 만료일이 있는 영구 쿠키인지에 대한
- 여부.
- * `expirationDate` Double - (Option) UNIX 시간으로 표시되는 쿠키의 만료일에
- 대한 초 단위 시간. 세션 쿠키는 지원되지 않음.
-
-#### `ses.cookies.set(details, callback)`
-
-* `details` Object
- * `url` String - 쿠키에 대한 `url` 링크.
- * `name` String - 쿠키의 이름입니다. 기본적으로 비워두면 생략됩니다.
- * `value` String - 쿠키의 값입니다. 기본적으로 비워두면 생략됩니다.
- * `domain` String - 쿠키의 도메인입니다. 기본적으로 비워두면 생략됩니다.
- * `path` String - 쿠키의 경로입니다. 기본적으로 비워두면 생략됩니다.
- * `secure` Boolean - 쿠키가 안전한 것으로 표시되는지에 대한 여부입니다. 기본값은
- false입니다.
- * `session` Boolean - 쿠키가 Http 전용으로 표시되는지에 대한 여부입니다. 기본값은
- false입니다.
- * `expirationDate` Double (optional) - UNIX 시간으로 표시되는 쿠키의 만료일에
- 대한 초 단위 시간입니다. 생략되면 쿠키가 세션 쿠기가 되며 세션 사이에 유지되지
- 않게 됩니다.
-* `callback` Function
-
-`details` 객체에 따라 쿠키를 설정합니다. 작업이 완료되면 `callback`이
-`callback(error)` 형태로 호출됩니다.
-
-#### `ses.cookies.remove(url, name, callback)`
-
-* `url` String - 쿠키와 관련된 URL입니다.
-* `name` String - 지울 쿠키의 이름입니다.
-* `callback` Function
-
-`url`과 `name`에 일치하는 쿠키를 삭제합니다. 작업이 완료되면 `callback`이
-`callback()` 형식으로 호출됩니다.
+`Session` 객체는 다음과 같은 메서드를 가지고 있습니다:
#### `ses.getCacheSize(callback)`
#### `ses.getUserAgent()`
-현재 세션에 대한 유저 에이전트를 표현하는 `String`을 반환합니다.
+현재 세션의 유저 에이전트를 표현하는 `String`을 반환합니다.
+
+### Instance Properties
+
+다음은 `Session` 인스턴스에서 사용할 수 있는 속성들입니다:
+
+#### `ses.cookies`
+
+현재 세션의 `Cookies` 클래스 인스턴스를 반환합니다.
#### `ses.webRequest`
-`webRequest` API는 생명주기의 다양한 단계에 맞춰 요청 콘텐츠를 가로채거나 변경할 수
-있도록 합니다.
+현재 세션의 `WebRequest` 클래스 인스턴스를 반환합니다.
+
+#### `ses.protocol`
+
+현재 세션의 [protocol](protocol.md) 모듈 인스턴스를 반환합니다.
+
+```javascript
+const {app, session} = require('electron')
+const path = require('path')
+
+app.on('ready', function () {
+ const protocol = session.fromPartition(partitionName).protocol
+ protocol.registerFileProtocol('atom', function (request, callback) {
+ var url = request.url.substr(7)
+ callback({path: path.normalize(__dirname + '/' + url)})
+ }, function (error) {
+ if (error)
+ console.error('Failed to register protocol')
+ })
+})
+```
+
+## Class: Cookies
+
+`Cookies` 클래스는 쿠키를 탐색하고 조작하는 방법을 제공합니다. `Cookies` 클래스의
+인스턴스는 반드시 `Session` 클래스의 `cookies` 속성에서 접근해야 합니다.
+
+예를 들어:
-각 API는 `filter`와 `listener`를 선택적으로 받을 수 있습니다. `listener`는 API의
-이벤트가 발생했을 때 `listener(details)` 형태로 호출되며 `defails`는 요청을 묘사하는
-객체입니다. `listener`에 `null`을 전달하면 이벤트 수신을 중지합니다.
+```javascript
+// 모든 쿠키를 요청합니다.
+session.defaultSession.cookies.get({}, (error, cookies) => {
+ console.log(cookies);
+});
+
+// url에 관련된 쿠키를 모두 가져옵니다.
+session.defaultSession.cookies.get({url: 'http://www.github.com'}, (error, cookies) => {
+ console.log(cookies);
+});
+
+// 지정한 쿠키 데이터를 설정합니다.
+// 동일한 쿠키가 있으면 해당 쿠키를 덮어씁니다.
+const cookie = {url: 'http://www.github.com', name: 'dummy_name', value: 'dummy'};
+session.defaultSession.cookies.set(cookie, (error) => {
+ if (error)
+ console.error(error);
+});
+```
+
+### Instance Methods
+
+다음은 `Cookies` 객체에서 사용할 수 있는 메서드들입니다:
+
+#### `ses.cookies.get(filter, callback)`
+
+* `filter` Object
+ * `url` String (optional) - `url`에 해당하는 쿠키를 취득합니다. 이 속성을
+ 생략하면 모든 url에서 찾습니다.
+ * `name` String (optional) - 쿠키의 이름입니다.
+ * `domain` String (optional) - 도메인 또는 서브 도메인에 일치하는 쿠키를
+ 취득합니다.
+ * `path` String (optional) - `path`에 일치하는 쿠키를 취득합니다.
+ * `secure` Boolean (optional) - 보안 속성에 따라 쿠키를 필터링합니다.
+ * `session` Boolean (optional) - 세션 또는 지속성 쿠키를 필터링합니다.
+* `callback` Function
+
+`details` 객체에서 묘사한 모든 쿠키를 요청합니다. 모든 작업이 끝나면 `callback`이
+`callback(error, cookies)` 형태로 호출됩니다.
+
+`cookies`는 `cookie` 객체의 배열입니다.
+
+* `cookie` Object
+ * `name` String - 쿠키의 이름.
+ * `value` String - 쿠키의 값.
+ * `domain` String - 쿠키의 도메인.
+ * `hostOnly` String - 쿠키가 호스트 전용인가에 대한 여부.
+ * `path` String - 쿠키의 경로.
+ * `secure` Boolean - 쿠키가 안전한 것으로 표시되는지에 대한 여부.
+ * `httpOnly` Boolean - 쿠키가 HTTP로만 표시되는지에 대한 여부.
+ * `session` Boolean - 쿠키가 세션 쿠키 또는 만료일이 있는 영구 쿠키인지에 대한
+ 여부.
+ * `expirationDate` Double - (Option) UNIX 시간으로 표시되는 쿠키의 만료일에
+ 대한 초 단위 시간. 세션 쿠키는 지원되지 않음.
+
+#### `ses.cookies.set(details, callback)`
+
+* `details` Object
+ * `url` String - 쿠키에 대한 `url` 링크.
+ * `name` String - 쿠키의 이름입니다. 기본적으로 비워두면 생략됩니다.
+ * `value` String - 쿠키의 값입니다. 기본적으로 비워두면 생략됩니다.
+ * `domain` String - 쿠키의 도메인입니다. 기본적으로 비워두면 생략됩니다.
+ * `path` String - 쿠키의 경로입니다. 기본적으로 비워두면 생략됩니다.
+ * `secure` Boolean - 쿠키가 안전한 것으로 표시되는지에 대한 여부입니다. 기본값은
+ false입니다.
+ * `httpOnly` Boolean - 쿠키가 Http 전용으로 표시되는지에 대한 여부입니다. 기본값은
+ false입니다.
+ * `expirationDate` Double (optional) - UNIX 시간으로 표시되는 쿠키의 만료일에
+ 대한 초 단위 시간입니다. 생략되면 쿠키가 세션 쿠기가 되며 세션 사이에 유지되지
+ 않게 됩니다.
+* `callback` Function
+
+`details` 객체에 따라 쿠키를 설정합니다. 작업이 완료되면 `callback`이
+`callback(error)` 형태로 호출됩니다.
+
+#### `ses.cookies.remove(url, name, callback)`
+
+* `url` String - 쿠키와 관련된 URL입니다.
+* `name` String - 지울 쿠키의 이름입니다.
+* `callback` Function
+
+`url`과 `name`에 일치하는 쿠키를 삭제합니다. 작업이 완료되면 `callback`이
+`callback()` 형식으로 호출됩니다.
+
+## Class: WebRequest
+
+`WebRequest` 클래스는 생명 주기의 다양한 단계에서 요청의 콘텐츠를 조작하거나 가로채는
+방법을 제공합니다. `WebRequest` 클래스는 반드시 `Session` 클래스의 `webRequest`
+속성에서 접근해야 합니다.
+
+`WebRequest`의 메서드는 선택적인 `filter`와 `listener` 속성을 허용하며 `listener`는
+API의 이벤트가 발생했을 때 `listener(details)` 형식으로 호출되고, `details`는 요청에
+관한 내용을 표현하는 객체입니다. `listener`에 `null`을 전달하면 이벤트의 구독을
+해제합니다.
`filter`는 `urls` 속성을 가진 객체입니다. 이 속성은 URL 규칙의 배열이며 URL 규칙에
일치하지 않는 요청을 모두 거르는데 사용됩니다. 만약 `filter`가 생략되면 모든 요청을
어떤 `listener`의 이벤트들은 `callback`을 같이 전달하는데, 이벤트 처리시
`listener`의 작업을 완료한 후 `response` 객체를 포함하여 호출해야 합니다.
+다음은 요청에 `User-Agent` 헤더를 추가하는 예시입니다:
+
```javascript
// 다음 url에 대한 User Agent를 조작합니다.
const filter = {
urls: ['https://*.github.com/*', '*://electron.github.io']
-};
+}
session.defaultSession.webRequest.onBeforeSendHeaders(filter, (details, callback) => {
- details.requestHeaders['User-Agent'] = "MyAgent";
- callback({cancel: false, requestHeaders: details.requestHeaders});
-});
+ details.requestHeaders['User-Agent'] = "MyAgent"
+ callback({cancel: false, requestHeaders: details.requestHeaders})
+})
```
-#### `ses.webRequest.onBeforeRequest([filter, ]listener)`
+### Instance Methods
+
+다음은 `WebRequest` 객체에서 사용할 수 있는 메서드들입니다:
+
+#### `webRequest.onBeforeRequest([filter, ]listener)`
* `filter` Object
* `listener` Function
* `redirectURL` String (optional) - 원래 요청은 전송과 완료가 방지되지만 이
속성을 지정하면 해당 URL로 리다이렉트됩니다.
-#### `ses.webRequest.onBeforeSendHeaders([filter, ]listener)`
+#### `webRequest.onBeforeSendHeaders([filter, ]listener)`
* `filter` Object
* `listener` Function
* `requestHeaders` Object (optional) - 이 속성이 제공되면, 요청은 이 헤더로
만들어 집니다.
-#### `ses.webRequest.onSendHeaders([filter, ]listener)`
+#### `webRequest.onSendHeaders([filter, ]listener)`
* `filter` Object
* `listener` Function
* `timestamp` Double
* `requestHeaders` Object
-#### `ses.webRequest.onHeadersReceived([filter, ]listener)`
+#### `webRequest.onHeadersReceived([filter, ]listener)`
* `filter` Object
* `listener` Function
변경하기 위해 반드시 지정되어야 합니다. 그렇지 않은 경우, 기존의 응답 헤더의 상태가
사용됩니다.
-#### `ses.webRequest.onResponseStarted([filter, ]listener)`
+#### `webRequest.onResponseStarted([filter, ]listener)`
* `filter` Object
* `listener` Function
* `statusCode` Integer
* `statusLine` String
-#### `ses.webRequest.onBeforeRedirect([filter, ]listener)`
+#### `webRequest.onBeforeRedirect([filter, ]listener)`
* `filter` Object
* `listener` Function
* `fromCache` Boolean
* `responseHeaders` Object
-#### `ses.webRequest.onCompleted([filter, ]listener)`
+#### `webRequest.onCompleted([filter, ]listener)`
* `filter` Object
* `listener` Function
* `statusCode` Integer
* `statusLine` String
-#### `ses.webRequest.onErrorOccurred([filter, ]listener)`
+#### `webRequest.onErrorOccurred([filter, ]listener)`
* `filter` Object
* `listener` Function
* `timestamp` Double
* `fromCache` Boolean
* `error` String - 에러 설명.
-
-#### `ses.protocol`
-
-현재 세션의 [protocol](protocol.md) 모듈 인스턴스를 반환합니다.
-
-```javascript
-const {app, session} = require('electron')
-const path = require('path')
-
-app.on('ready', function () {
- const protocol = session.fromPartition(partitionName).protocol
- protocol.registerFileProtocol('atom', function (request, callback) {
- var url = request.url.substr(7)
- callback({path: path.normalize(__dirname + '/' + url)})
- }, function (error) {
- if (error)
- console.error('Failed to register protocol')
- })
-})
-```