JS властивість Location.origin


Загальний опис

Властивість origin в об'єкті Location в JavaScript є важливою для розуміння і використання при розробці веб-додатків. Вона повертає початковий URI (Uniform Resource Identifier) поточного документа, який складається з протоколу, імені хоста та порту. Ця властивість важлива для визначення походження документа, що особливо корисно в контексті безпеки, наприклад, при роботі з CORS (Cross-Origin Resource Sharing) або для перевірки дозволів при взаємодії між доменами.

origin є тільки для читання і повертає строку, що вказує на походження документа. Наприклад, для URL https://www.example.com:443/path/file.html, origin поверне https://www.example.com.

Приклади використання:

  1. Визначення походження документа: Основне застосування origin полягає у визначенні походження поточного документа:

     let currentOrigin = window.location.origin;
     console.log(currentOrigin);
    

    Цей код виведе на консоль початковий URI поточної веб-сторінки.

  2. Перевірка походження при обробці запитів: При роботі з AJAX-запитами або при інтеграції з іншими API, origin може використовуватися для перевірки, чи запит прийшов з дозволеного джерела:

     if (window.location.origin === 'https://www.trusted-source.com') {
    	 // Обробка запиту від довіреного джерела
     }
    

    Цей підхід допомагає запобігти потенційно шкідливим взаємодіям із недовіреними джерелами.

  3. Використання в безпеці веб-додатків: origin є ключовим у реалізації політик безпеки, таких як CORS, де необхідно забезпечити, що запити до ресурсів здійснюються з безпечних джерел:

     fetch('https://api.example.com/data', {
    	 method: 'GET',
    	 mode: 'cors',
    	 headers: {
    			 'Origin': window.location.origin
    	 }
     })
     .then(response => response.json())
     .then(data => console.log(data));
    

    Тут origin використовується для включення правильного заголовка в запит до сервера.

У підсумку, location.origin є важливим інструментом для розробників веб-додатків, що дозволяє безпечно визначати та використовувати походження документа. Використання цієї властивості є ключовим для забезпечення безпеки і правильної функціональності сучасних веб-додатків.

автор: Bond

Порада

Використовуйте location.origin для перевірки походження веб-сторінки, особливо коли працюєте з перехресними запитами або інтеграцією з іншими веб-сервісами. Це дозволить забезпечити, що запити відправляються або обробляються тільки з довірених джерел, підвищуючи безпеку вашого додатку.

автор: Bond
Порада

При створенні абсолютних URL-адрес для AJAX-запитів або при встановленні посилань, використовуйте location.origin як базову частину URL. Це гарантує, що ваші посилання та запити завжди відносяться до поточного домену, що особливо важливо при роботі з різними середовищами, такими як розробка, тестування та продакшн.

автор: Bond
Порада

Будьте обережні, коли використовуєте location.origin у контексті безпеки, оскільки зловмисники можуть маніпулювати походженням через атаки типу "man-in-the-middle". Тому, перед використанням цього значення для важливих перевірок безпеки, переконайтеся, що використовуєте додаткові заходи, такі як HTTPS.

автор: Bond
Порада

Для розробників, які працюють з iframes або вбудованими ресурсами, location.origin може бути корисним для перевірки, чи iframe або ресурс належить тому ж походженню, що й батьківська сторінка. Це допомагає уникнути проблем з безпекою і забезпечує коректну інтеграцію контенту.

автор: Bond

Синтаксис

location.origin

Переглядачі

Підтримка: стаціонарні переглядачі
Переглядач Google Chrome Mozilla Firefox Apple Safari Opera Microsoft EDGE Microsoft Internet Explorer
8 21 5.1 15 12 11
Підтримка: мобільні переглядачі
Переглядач Mobile Google Android Mobile Google Chrome Mobile Mozilla Firefox Mobile Apple Safari
3 18 21 5
Підтримка: серверні переглядачі
Переглядач Deno
1.7*

Приклади

+ запропонувати свій приклад у пісочниці

У цьому прикладі ми демонструємо базове використання властивості location.origin для отримання оригіналу (походження) поточної веб-сторінки. Це може бути корисним для визначення основного домену та протоколу, на яких знаходиться сторінка, що важливо для розробки безпечних веб-застосунків.

// Отримання оригіналу поточної веб-сторінки
let currentOrigin = window.location.origin;
console.log(currentOrigin);
автор: Bond

У цьому більш складному прикладі ми використовуємо location.origin для валідації оригіналу при виконанні AJAX запитів. Це особливо корисно при розробці безпечних веб-застосунків, де важливо переконатися, що запити відправляються та приймаються з довірених джерел.

// Функція для відправлення AJAX запиту
function sendAjaxRequest(url) {
    // Перевірка, чи URL запиту відповідає оригіналу поточної сторінки
    if (new URL(url).origin === window.location.origin) {
        // Виконання AJAX запиту
        fetch(url)
            .then(response => response.json())
            .then(data => console.log(data))
            .catch(error => console.error('Помилка:', error));
    } else {
        console.error('Запит відхилений: невідповідний оригінал');
    }
}

// Приклад виклику функції
sendAjaxRequest('https://www.example.com/data');
автор: Bond

У цьому прикладі, ми створили кнопку "Показати Origin", яка дозволяє користувачеві взаємодіяти з веб-сторінкою. Натискання на цю кнопку активує обробник подій, який використовує window.location.origin для отримання оригіналу поточної сторінки та відображає його у параграфі з ідентифікатором "originInfo". Цей приклад показує, як використовувати властивість origin для отримання базової інформації про домен і протокол поточної веб-сторінки.

автор: Bond

Коментарі

Коментарів ще немає — будьте першим!

Відповідь для

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле саме підкаже шляхи, а хибний підкреслить хвилею.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

Увійдіть — коментар з'явиться одразу, без капчі й очікування перевірки.

Пропозиція правки

Ваша версія — : після перевірки замінить чинну. Нова порада чи нотатка — з'явиться на сторінці після перевірки.

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле саме підкаже шляхи, а хибний підкреслить хвилею.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія секції «»: після перевірки замінить чинну.

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле саме підкаже шляхи, а хибний підкреслить хвилею.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Ваша версія опису «»: після перевірки замінить чинну.

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле саме підкаже шляхи, а хибний підкреслить хвилею.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

Ви гість — діють добові ліміти. Увійдіть, щоб пропонувати без капчі.

Зворотний зв'язок
Вхід