Як увімкнути зовнішній запит у IIS Express?


466

Як я можу включити віддалені запити в IIS Express? Скотт Гетрі написав, що це можливо, але він не сказав як.


25
Для цього є безкоштовне розширення VS, про яке ми писали visualstudiogallery.msdn.microsoft.com/…
Джим W каже, що відновити Моніку

@JimW Jim, ти творець плагіна? Скажіть, будь ласка, як працює це диво інженерії програмного забезпечення?
Ян Варбуртон

Дякуємо @IanWarburton за те, що назвав це дивом! Це зворотний проксі-сервер.
Джим W каже, що повернемо Моніку

@JimW Дякую, що створили його.
Ян Варбуртон

@JimW Я спробував ваш плагін і роблю все, як ви сказали в підручнику. Але я не можу
домогтися

Відповіді:


403

Зараз на сайті команди IIS розміщено повідомлення про блог, де пояснюється, як увімкнути віддалені з'єднання на IIS Express . Ось відповідна частина цієї публікації узагальнена:

У Vista та Win7 запустіть таку команду з адміністративного запиту:

netsh http add urlacl url=http://vaidesg:8080/ user=everyone

Для XP спочатку встановіть інструменти підтримки Windows XP Service Pack 2. Потім запустіть таку команду з адміністративного запиту:

httpcfg set urlacl /u http://vaidesg1:8080/ /a D:(A;;GX;;;WD)


121
У разі 503 помилки, побачити це: stackoverflow.com/questions/5442551 / ...
deerchao

5
Чи є netshкоманда для дозволу з'єднань на будь-якому імені хоста?
Полковник Паніка

33
Тільки для запису, якщо у вас машина Windows не англійською мовою, параметр user={PARAM_USER}буде на вашій власній мові.
GoRoS

7
Використання підстановочних знаків у параметрі url (наприклад, url = http: // *: 8080 /) дозволить з’єднанням працювати як для імені хоста, так і для IP-адреси комп'ютера.
Андерс

2
Якщо команда не працює (ймовірно, помилка 1789), враховуйте, що команда очікує від користувача на вашій мові ПК. Отже, якщо ваш ПК, наприклад, португальською, використовуйте user=todosзамість цього user=everyone.
Вітор Канова

350

Можливо, вам доведеться внести три зміни.

  1. Скажіть IIS Express себе прив’язувати до всіх ip-адрес та імен хостів. У вашому .configфайлі. Зазвичай:
    • VS 2015: $(solutionDir)\.vs\config\applicationhost.config
    • <VS 2015: %userprofile%\My Documents\IISExpress\config\applicationhost.config

Знайдіть елемент зв’язування вашого сайту та додайте

    <binding protocol="http" bindingInformation="*:8080:*" />
  1. Установіть біт Windows під назвою "http.sys". Як адміністратор, запустіть команду:
    netsh http add urlacl url=http://*:8080/ user=everyone

Де everyoneгрупа вікон. Використовуйте подвійні лапки для груп з пробілами на кшталт "Tout le monde".

  1. Дозволити IIS Express через брандмауер Windows.

    Запуск / брандмауер Windows із розширеними правилами безпеки / вхідних даних / новим правилом ...

    Програма %ProgramFiles%\IIS Express\iisexpress.exe
    АБО Порт 8080 TCP

Тепер, коли ви починаєте, iisexpress.exeви повинні побачити повідомлення типу

URL-адреса "http: // *: 8080 /" для веб-сайту "привіт світ", програма зареєстрована "/"


22
NB Якщо ви працюєте в локалізованої версії Windows , параметр users=everyoneдля netsh(другий етап) може викликати помилку 1789. Рішення полягає в перетворенні everyoneдо відповідного імені групи на вашій мові.
mflodin

5
Як змусити проект Visual Studio прийняти цю прив'язку? У властивостях проекту, де ви вказуєте Project Url, якщо я введіть зірочку для імені хоста, він видає помилку. Якщо я ввожу щось інше, він намагається створити новий віртуальний каталог. Він не посилається на запис у application.config.
Тревор Елліотт

20
Щоб він працював у Visual Studio, ви повинні використовувати ім'я хоста свого комп'ютера на кроці 1 bindingInformation="*:8080:hostname"та на кроці 2 url=http://hostname:8080/, а також у властивостях веб-проекту Visual Studio на вкладці Веб встановити URL-адресу проекту http://hostname:8080/. Видаліть *urlacl, якщо ви його вже створили; він не працюватиме, якщо у вас обоє. Нарешті, URL-адреса, яку ви переходите у свій веб-браузер, має посилатися на ім’я хоста, а не localhost.
Джо Дейлі

5
Мені довелося також мати локальний хост в елементі прив'язки, інакше візуальна студія 2013 намагалася створити дублікат запису на сайті. напр .:<binding protocol="http" bindingInformation="*:8080:localhost" />
kristianp

3
Мені також потрібно було запустити Visual Studio як адміністратор, але ця відповідь була найбільш ретельною.
dlsso

127

Я пам’ятаю, що стикався з тими ж проблемами, намагаючись цей робочий процес кілька місяців тому.

Ось чому я написав просту утиліту проксі спеціально для такого сценарію: https://github.com/icflorescu/iisexpress-proxy .

Використовуючи проксі- сервер IIS , все стає досить простим - не потрібно "netsh http додавати urlacl url = vaidesg: 8080 / user = all" або псуватися зі своїм "applicationhost.config".

Просто видайте це в командному рядку:

iisexpress-proxy 8080 to 3000

… І тоді ви можете вказати віддалені пристрої на http: // vaidesg: 3000 .

У більшості випадків простіше IS краще.


3
Дякую за чудове рішення!
Літо-час

1
І я можу додати, що подібні рішення Node.js - це єдині, які надійно працюють над Azure, оскільки Azure створює автоматичну генерацію файла applicationhost.config та стирає ваші зміни прив'язки.
TheHansans

1
Я почав використовувати IIS Express Proxy на своєму Mac разом з ngrok після того, як ngrok не працював так, як очікувалося (тому що я не робив необхідних маніпуляцій з конфігурацією IIS Express). Дуже зручно! Дякую.
codingoutloud

1
Це, безумовно, найпростіше рішення. Я вважаю за краще не возитися з applicationhost.config, якщо мені не доведеться.
скальпін

4
Відмінне рішення! Тепер, щоб повернутися назад і скасувати безлад, який я зробив зі свого IIS Express.
Мітч Стюарт

123

Ніщо не працювало для мене, поки я не знайшов iisexpress-proxy .

Відкрийте командний рядок як адміністратор, а потім запустіть

npm install -g iisexpress-proxy

тоді

iisexpress-proxy 51123 to 81

якщо припустимо, що проект Visual Studio відкриється на localhost: 51123, і ви хочете отримати доступ по зовнішній IP-адресі xxxx: 81

Редагувати: Зараз я використовую ngrok


7
безболісне рішення
бахадір

4
Найпростіше рішення, яке я міг знайти. Напевно, слід перейменувати пакет на щось на зразок web-проксі, оскільки ви можете використовувати його для більш ніж пересилання iisexpress :)
Mario Tacke

8
@xgp - Привіт, я автор iisexpress-proxy :-) Чи вдалось вам зрештою зробити так, щоб він працював для вас? Вам потрібно закрити та повторно відкрити командний рядок, або в рідкісних випадках подія перезапустити ОС. Залиште мені рядок на сторінці проекту ( github.com/icflorescu/iisexpress-proxy ), якщо у вас є додаткові запитання, і я спробую допомогти, якщо встигну .
Іонут-Крістіан Флореску

1
Дякую всім за те, що використовуєте його та за добрі слова :-). @MarioTacke - так, я знаю, але більше людей зможуть знайти його просто google-ing, якщо він називається iisexpress-proxy :-)
Іонут-Крістіан Флореску

1
До речі, це не працює з аутентифікацією Windows.
Том

35

В якості додаткового підходу до цього:

netsh http add urlacl url=http://vaidesg:8080/ user=everyone

Це буде працювати лише в англійських версіях Windows. Якщо ви використовуєте локалізовану версію, вам доведеться замінити "всіх" чимось іншим, наприклад:

  • "Iedereen" при використанні голландської версії
  • "Jeder" при використанні німецької версії
  • "Mindenki" при використанні угорської версії

Інакше ви отримаєте помилку (Створення SDDL не вдалося, Помилка: 1332)


33

Хороший ресурс: Робота з SSL в час розробки, простіше за допомогою IISExpress Скотта Хензельмана .

Після чого ви шукаєте, це розділ « Отримання IIS Express» для зовнішньої служби через порт 80


Ця публікація в блозі рекомендує виділити порт 80 на "IISExpressWeb.exe". У поточній версії IIS Express відсутня версія цього імені - є лише IISExpress.exe та IISExpressTray.exe. Ізоляція з'єднань або запобігає з’єднанню ззовні; усунення обмеження процесу дозволяє з'єднання дюйма. Назвіть правильний .exe для націлювання?
Кріс Москіні

33

Якщо ви працюєте з Visual Studio, виконайте наступні дії, щоб отримати доступ до IIS-Express через IP-адресу:

  1. Отримайте свій IP-адресу хоста: ipconfigу командному рядку Windows
  2. Йти до

    $(SolutionDir)\.vs\config\applicationHost.config
  3. Знайдіть

    <site name="WebApplication3" id="2">
       <application path="/" applicationPool="Clr4IntegratedAppPool">
          <virtualDirectory path="/" physicalPath="C:\Users\user.name\Source\Repos\protoype-one\WebApplication3" />
       </application>
       <bindings>
         <binding protocol="http" bindingInformation="*:62549:localhost" />
       </bindings>
    </site>
  4. Додайте: за <binding protocol="http" bindingInformation="*:62549:192.168.178.108"/>
    допомогою IP-адреси

  5. Запустіть свою Visual Studio з правами адміністратора, і все має працювати
  6. Можливо, пошукайте деякі проблеми з брандмауером, якщо ви намагаєтесь підключитися віддалено

20

Я вирішив це, встановивши "Конвеєр від Keyoti" у Visual Studio Professional 2015. Конвеєр генерує REMOTE-адресу (ваш IP) з портом (45455), який дозволяє зовнішній запит. Приклад:

введіть тут опис зображення

Конвеєр дозволяє перевіряти веб-програми із зовнішніх планшетів і телефонів у вашій мережі або з емуляторів Android (без http://10.0.2.2:<hostport>)

Етапи перебувають за наступним посиланням:

https://marketplace.visualstudio.com/items?itemName=vs-publisher-1448185.ConveyorbyKeyoti


@kilianeller, будь ласка, перейдіть за посиланням у відповіді та задайте питання, ми можемо вам допомогти.
Джим W каже, що поверніть Моніку

Workst !!, я доводжу все інше рішення (змінити applicationhost.config, netsh, IPv6 адреса ..) і нічого, але встановлення цього нарешті працює, єдиним невеликим питанням було те, що неправильно направлено IP-адресу, але не є серйозною проблемою.
Іон

Дійсно простий в установці. Просто переконайтеся, що ви додали сертифікат у віддалений веб-переглядач відповідно до інструкцій на сторінці розширення.
Андрес

Я не можу повірити, це працює !!! ТАК ПРОСТО, ТАКЕ ЕЛЕГАНТ !!! Останні 5 годин я витратив лише на пошуки порожніх рішень і, нарешті, знайшов це!
Ziggy192

10

Якщо ви спробували відповідь полковника Паніка, але він не працює у Visual Studio, спробуйте це:

Додайте інше <binding />в конфігурацію IIS Express

<bindings>
    <binding protocol="http" bindingInformation="*:8080:localhost" />
    <binding protocol="http" bindingInformation="*:8080:hostname" />
</bindings>

Нарешті, ви повинні запустити Visual Studio як адміністратор


На жаль, це, здається, не працює для мене .. Я все одно отримую відмову в зв’язку, коли я намагаюся отримати доступ до свого локального ip на порт 8080
Thomas Teilmann

@ThomasTeilmann, у Visual Studio мені довелося відкрити властивості веб-програми, а на вкладці Веб змінити "URL-адреса проекту", щоб використовувати альтернативне ім'я хоста замість localhost.
Сем

@ThomasTeilmann, О, і я думаю, вам потрібно переглядати його за ім'ям хоста, а не IP.
Сем

Насправді я спробував і те, і інше, і це не працювало для хмарного екземпляра: / Дякую, хоча
Томас Тельман,

Це була відповідь для мене (тобто запустіть VS як адміністратор) - дякую @Bruce. Крім того, мені також довелося вручну виправити налаштування брандмауера. У моєму випадку (тобто тестування того, що мій айфон може переглядати мою розроблювальну машину) відкриття порту 8080 на брандмауері не працювало (так?), Але відкриття доступу через ip (тобто Область застосування> Локальні IP = 10.0.0.0/24 = мій дім мережа) зробила трюк.
Ілан

8

Що мені допомогло - це клацнути правою кнопкою миші значок "IISExpress", "Показати всі програми". Потім, вибравши веб-сайт, я побачив, який aplicationhost.config він використовує, і виправлення пройшло ідеально.

Конфігурація IISExpress


2
Ця відповідь вказує мені на інше рішення, редагуючи applicationhost.config, щоб прийняти : 55665: замість *: 55665: localhost
Deko

Дякую @Deko - ваш коментар у поєднанні з командою netsh, згаданою в кількох інших відповідях, змусив мене працювати.
Марсель Попеску

8

Це я зробив для Windows 10 з Visual Studio 2015, щоб увімкнути віддалений доступ, як з http, так і з https:

Перший крок - прив’язання програми до внутрішньої IP-адреси. Запустіть cmd->, ipconfigщоб отримати адресу. Відкрийте файл /{project folder}/.vs/config/applicationhost.configі прокрутіть униз, поки не знайдете щось подібне:

<site name="Project.Web" id="2">
    <application path="/">
        <virtualDirectory path="/" physicalPath="C:\Project\Project.Web" />
    </application>
    <bindings>
        <binding protocol="http" bindingInformation="*:12345:localhost" />
    </bindings>
</site>

Додайте дві нові прив'язки під bindings. Ви також можете використовувати HTTPS, якщо вам подобається:

<binding protocol="http" bindingInformation="*:12345:192.168.1.15" />
<binding protocol="https" bindingInformation="*:44300:192.168.1.15" />

Додайте наступне правило до брандмауера, відкрийте нове cmdзапит як адміністратор та виконайте такі команди:

netsh advfirewall firewall add rule name="IISExpressWeb" dir=in protocol=tcp localport=12345 profile=private remoteip=localsubnet action=allow

netsh advfirewall firewall add rule name="IISExpressWebHttps" dir=in protocol=tcp localport=44300 profile=private remoteip=localsubnet action=allow

Тепер запустіть Visual Studio як Administrator. Клацніть правою кнопкою миші файл проекту веб-проектів та виберіть Properties. Перейти доWeb вкладку і натисніть Create Virtual Directory. Якщо Visual Studio не запускається як адміністратор, це, ймовірно, не вдасться. Тепер все повинно працювати.

введіть тут опис зображення


Працювали для мене! :) Тут також є приємний пост: blog.kloud.com.au/2017/02/27/…
Леніел Маккаферрі

Я спробував все інше, включаючи ngrok, безрезультатно. Це спрацювало з першої спроби.
kooldave98

5

Прийнята відповідь на це питання - це посібник для налагодження роботи IIS Express з веб-матрицею. Я вважав цей посібник кориснішим під час спроби змусити його працювати з VS 2010.

Я просто дотримувався кроків 3 і 4 (запускаючи IIS Express як адміністратор), і мені довелося тимчасово відключити брандмауер, щоб він працював.


Інструкції, які ви посилаєте, втрачають можливість налагодження від Visual Studio, що, принаймні, на мій погляд, робить безглуздим - використання IIS або будь-якого іншого віддаленого сервера було б таким же хорошим або кращим (адже ви могли б встановити віддалену налагодження на IIS принаймні). Якщо IIS Express не вимагав права адміністратора працювати без localhost, це просто спрацювало. Дуже дратує.
Кріс Москіні

Це саме те, що я шукав - дякую! Я використовую IIS Express з Visual Studio 2010 і збирався тестувати додаток ASP.NET MVC3 у своїй локальній мережі, і це було те, що мені було потрібно для цього :)
Lasse Christiansen,

5

Ви можете спробувати налаштувати переадресацію портів, а не намагатися змінити конфігурацію IIS Express, додавши нові правила HTTP.sys або запустивши Visual Studio як адміністратора.

В основному вам потрібно переслати IP:PORT ваш веб-сайт на якийсь інший вільний порт на вашій машині, але на зовнішній мережевий адаптер, а не на localhost.

Вся справа в тому, що IIS Express (принаймні в Windows 10) пов'язується [::1]:port сенсу, який він слухає на порту IPv6. Вам потрібно це врахувати.

Ось як я зробив цю роботу - http://programmingflow.com/2017/02/25/iis-express-on-external-ip.html

Сподіваюся, це допомагає.


Я запускаю Windows 10, і ключовим є прив’язка localhost до IPv6. Дякую!
TomaszGuzialek

Комп’ютер, який я намагався налаштувати, мав ще одну локальну адресу. Її назвали "місцевий-дев". Мені довелося просто прив’язати додати v4tov6 listeport = 3000 connectaddress = local-dev connectport = 60000, щоб змусити його працювати. Чудовий пост, дякую!
Аніка

4

Найпростіший і найкрутіший спосіб, який я знайшов, - це використовувати (на налаштування потрібно 2 хвилини):

https://ngrok.com/

Він буде працювати з усім, що працює на localhost. Просто зареєструйтесь, запустіть невелику виправдану програму, і все, що ви працюєте на localhost, отримує загальнодоступну URL-адресу, до якої ви можете отримати доступ з будь-якого місця.

Це добре для показу речей своїм віддаленим товаришам по команді, не сварившись із налаштуваннями IIS або брандмауерами. Хочете зупинити доступ просто скасувати виконуваний файл.

ngrok authtoken xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

ngrok http -host-header=localhost 89230

якщо припустити, що 89230 - це ваш порт IIS Express

Ви також можете запускати кілька портів навіть у вільному плані


1
Хто подумає, що мені доведеться прочитати стільки відповідей, поки не
знайду

3

У мене є проблеми з використанням IIS Express у Win 8.1 та зовнішнім запитом.

Я виконую ці кроки для налагодження зовнішнього запиту:

  1. Встановіть IIS
  2. Настройте Visual Studio для використання локальних IIS (властивості сторінки у вашому веб-проекті)
  3. Створіть ексклюзивний AppPool в IIS для роботи зі своїм додатком
  4. У своєму проекті я використовую Oracle Client і має бути 32 біт (64 біти не працюють з Visual Studio), тоді мені потрібно дозволити 32 біт у пулі додатків
  5. Налаштуйте брандмауер Windows, щоб дозволити запит через порт 80 (вхідні правила)

Це працює!


2

Якщо ви запустили Visual Studio від адміністратора, ви можете додати просто

<binding protocol="http" bindingInformation="*:8080:*" />

або

<binding protocol="https" bindingInformation="*:8443:*" />

в

%userprofile%\My Documents\IISExpress\config\applicationhost.config

1
Я застосував цю конфігурацію до, $(SolutionDir).vs\config\applicationHost.configа також мені довелося відкрити порт (8443) програми у брандмауері Windows.
Тонатіо

2

У мене був увімкнений локальний IIS, тому я просто створив правило переписати на свій порт налагодження ... Я думаю, що це краще і крутіше, ніж інші методи, оскільки його легше видалити, коли я закінчую розробку ... Ось як виглядає перезапис. .

<rewrite>
    <rules>
        <rule name="ReverseProxyInboundRule1" stopProcessing="true">
            <match url="^dev/(.*)" />
            <action type="Rewrite" url="http://localhost:47039/{R:1}" />
        </rule>
    </rules>
</rewrite>

VS також дозволяє розробляти, використовуючи локальний IIS безпосередньо (що потім дозволяє віддалені з'єднання), але, в свою чергу, ви завжди повинні запускати його як адміністратор ... Мені цього не подобається.


Це теж моє улюблене рішення, дякую :) Я просто спершу повинен був увімкнути Reverse Proxy для свого IIS, а потім додати це правило до моєї web.config.
Махді Гіасі

1

Я вирішив цю проблему, використовуючи зворотний підхід проксі.

Я встановив wamp-сервер і використовував просту функцію зворотного проксі веб-сервера apache.

Я додав новий порт для прослуховування веб-сервера Apache (8081). Потім я додав конфігурацію проксі як virtualhost для цього порту.

<VirtualHost *:8081>
ProxyPass / http://localhost:46935/
ProxyPassReverse / http://localhost:46935/
</VirtualHost>

1

Я робив усі ці кроки і нічого мені не допомогло. І що мені потрібно, це просто запустити свій додаток через IIS Express ...

введіть тут опис зображення

Сподіваюся, це допомагає.


0

Мені не вдалося подавати запити iis іншим користувачам у моїй локальній мережі, все, що мені потрібно було зробити (крім вищезазначеного), було перезапустити свій маршрутизатор BT Hub.


0

Це шалено дивовижно і навіть охоплює HTTPS із гарними доменними іменами:

http://www.hanselman.com/blog/WorkingWithSSLAtDevelopmentTimeIsEasierWithIISExpress.aspx

Дійсно дивовижні частини, яких я не міг знайти більше ніде на SO, якщо випадок, що перебуває вище, ніколи не піде:

> C:\Program Files (x86)\IIS Express>IisExpressAdminCmd.exe Usage:
> iisexpressadmincmd.exe <command> <parameters> Supported commands:
>       setupFriendlyHostnameUrl -url:<url>
>       deleteFriendlyHostnameUrl -url:<url>
>       setupUrl -url:<url>
>       deleteUrl -url:<url>
>       setupSslUrl -url:<url> -CertHash:<value>
>       setupSslUrl -url:<url> -UseSelfSigned
>       deleteSslUrl -url:<url>
> 
> Examples: 1) Configure "http.sys" and "hosts" file for friendly
> hostname "contoso": iisexpressadmincmd setupFriendlyHostnameUrl
> -url:http://contoso:80/ 2) Remove "http.sys" configuration and "hosts" file entry for the friendly  hostname "contoso": iisexpressadmincmd
> deleteFriendlyHostnameUrl -url:http://contoso:80/

Вищевказана утиліта зареєструє сертифікат SSL для вас! Якщо ви використовуєте опцію -UseSelfSigned, це дуже просто.

Якщо ви хочете зробити справи важким способом, неочевидною частиною є те, що вам потрібно повідомити HTTP.SYS, який сертифікат використовувати, як це:

netsh http add sslcert ipport=0.0.0.0:443 appid={214124cd-d05b-4309-9af9-9caa44b2b74a} certhash=YOURCERTHASHHERE

Certhash - це "Thumbprint", який можна отримати із властивостей сертифіката в MMC.


0

Я зробив наступне і зміг підключитися:

1) змінено прив'язку конфігурації IIS з локального хоста на '*'

протокол прив'язки = "http "indingInformation =" *: 8888: * "

2) Визначено вхідне правило на брандмауері, щоб дозволити конкретний порт для типу протоколу: tcp

3) Додайте таку команду, щоб додати конфігурацію мережі для вашого порту: netsh http add urlacl url = http: // *: 8888 / user = every


Оскільки до цього питання ви приходите через 6 років після того, як його задали, і вже є 12 інших відповідей, було б найкраще, якщо ви редагуєте редакцію своєї відповіді, щоб пояснити, як ваша відповідь працює краще, ніж інші 12 (або принаймні, як це інакший).
Єретична мавпа

0

Ще одним способом доступу до зовнішніх запитів є використання IIS замість IIS Express. У своїй візуальній студії я можу просто переключитися.

введіть тут опис зображення


Я використовую VS2019.
PJ3

-1

[діалог властивостей проекту]

Для розробки за допомогою VisualStudio 2017 та NetCore API-проекту:

1) У Cmd-Box: ipconfig / all для визначення IP-адреси

2a) Введіть отриману IP-адресу в розділі Властивості проекту-> Вкладка налагодження

2b) Виберіть порт і приєднайте його до IP-адреси з кроку 2a.

3) Додайте правило дозволу у брандмауер, щоб дозволити вхідний TCP-трафік на вибраному порту (мій брандмауер спрацьовує діалоговим вікном: "Блокувати або додати правило до брандмауера"). У цьому випадку Add зробить трюк.

Недолік рішення вище:

1) Якщо ви використовуєте динамічну IP-адресу, вам потрібно повторити описані вище кроки, якщо інша IP-адреса була призначена.

2) Тепер у вашого сервера відкритий порт, який ви можете забути, але цей відкритий порт залишається запрошенням для небажаних гостей.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.