Я шукав конкретні причини безпеки щодо того, чому це було додано. Це був якийсь момент WTH, коли я впроваджував cors і міг бачити, як повертаються всі заголовки, але я не міг отримати до них доступ через javascript ..
Я шукав конкретні причини безпеки щодо того, чому це було додано. Це був якийсь момент WTH, коли я впроваджував cors і міг бачити, як повертаються всі заголовки, але я не міг отримати до них доступ через javascript ..
Відповіді:
CORS реалізовано таким чином, що він не порушує припущень, зроблених у попередньому CORS, світі, що має єдине походження.
У світі до CORS клієнт міг ініціювати запит на перехресне походження (наприклад, за допомогою тегу скрипта), але він не міг прочитати заголовки відповідей.
Для того, щоб гарантувати, що CORS не порушує цього припущення, специфікація CORS вимагає від сервера надання явних дозволів для читання клієнтами цих заголовків (через Access-Control-Expose-Headers
заголовок). Таким чином, несанкціоновані запити CORS поводяться так, як це було у світі, що передував CORS.
Access-Control-Expose-Headers
не для безпеки взагалі, а для сумісності? Не існує нападу, який ми використовуємо Access-Control-Expose-Headers
для пом’якшення?
Ось причина, чому потрібні Access-Control-Expose-Headers:
Access-Control-Expose-Headers (необов’язково) - об’єкт XMLHttpRequest 2 має метод getResponseHeader (), який повертає значення певного заголовка відповіді. Під час запиту CORS метод getResponseHeader () може отримати доступ лише до простих заголовків відповідей. Прості заголовки відповідей визначаються наступним чином:
Якщо ви хочете, щоб клієнти мали доступ до інших заголовків, вам слід використовувати заголовок Access-Control-Expose-Headers . Значення цього заголовка - це розділений комами список заголовків відповідей, які ви хочете показати клієнту.
для отримання додаткової довідки, будь-ласка, перейдіть за посиланням https://www.html5rocks.com/en/tutorials/cors/
Щасливого кодування !!
Це досить гарне запитання. Переглядаючи http://www.w3.org/TR/cors/#simple-response-header , незрозуміло, чому ви хотіли б це робити чи потрібно.
Специфікація CORS надає велику вагу ідеї, що вам потрібно мати попереднє запит рукостискання, коли клієнт запитує тип підключення, а сервер відповідає, що він це дозволить - тому це може бути ще одним аспектом цього .
За замовчуванням довжина вмісту не є дозволеним заголовком, тому я зіткнувся з тією ж проблемою (пізніше, коли мені потрібно було отримати доступ до WebDAV і мені довелося змінити допустимі параметри) .. CORS насправді не має великого сенсу (для мене ), в першу чергу, щоб це не здивувало мене, якщо його примхливі частини.