В файле location.href намеренно отсутствуют имя пользователя и пароль при включении в URL-адрес?

Когда я открываю URL-адрес веб-сайта с использованием базовой аутентификации HTTP, который содержит имя пользователя и пароль, например:

https://foo:[email protected]/basic-auth/foo/bar

Проверка через консоль браузера показывает, что location.href возвращает URL-адрес без учетных данных (т. е. https://httpbin.org/basic-auth/foo/bar).

Однако document.URL возвращает URL-адрес с учетными данными (https://foo:[email protected]/basic-auth/foo/bar).

Я не нашел никаких упоминаний о намеренном различии между этими двумя средствами доступа. Это ошибка браузера, деталь реализации или стабильное стандартное поведение?

Вероятно, актуально: stackoverflow.com/a/57193064/2181514: Chrome перестал поддерживать передачу учетных данных в URL-адресе после версии 52.

fdomn-m 03.09.2024 15:27

Хм, я проверил только Firefox и Edge и думаю, что эта часть поведения была одинаковой.

Tanriol 03.09.2024 15:43
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
2
53
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

TLDR: В текущей спецификации HTML (сентябрь 2024 г.) location.href должен вести себя так же, как document.URL (см. это обсуждение с annevk, одним из инженеров веб-стандартов). Все части URL-адреса должны быть включены, и поэтому для браузеров является ошибкой реализации его редактирование по соображениям безопасности.

Что касается реализации, Chromium , Firefox и Safari (Webkit) явно удалили части учетных данных из location.href перед их доступностью к интерфейсам JavaScript.

Я предполагаю, что ребята из браузера не пришли к единому мнению, поскольку разработчики Chromium спрашивали, какое поведение по умолчанию в других браузерах и Firefox, похоже, реализовал такую ​​функцию уже давно (по крайней мере, до Mozilla 1.0).

Для document.URL кажется правильным вернуть полный URL-адрес с учетными данными в соответствии со спецификацией (не явно), и, по крайней мере, Chromium и Firefox следовали этому (я не тестировал в Safari).

С точки зрения спецификации эти два свойства «определены как идентичные» и location.href не должны «опускать части URL-адреса» . Однако такое поведение редактирования учетных данных на уровне API еще не стандартизировано, но «определенно должно быть как-то стандартизировано».

Другие вопросы по теме