Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 29.08.2016, 16:02
Новичок на форуме
Отправить личное сообщение для tweentween1 Посмотреть профиль Найти все сообщения от tweentween1
 
Регистрация: 29.08.2016
Сообщений: 5

Проверить наличие 403 по данному url'у
Добрый день! Есть определённый url, нужно проверить, возвращает ли сервер в ответ 403. Пробую через XMLHttpRequest, но проблема в том, что когда сервер формирует 403, заголовка 'Access-Control-Allow-Origin' нет. При этом клиент (браузер) видит, что ему возвращается 403, но не передаёт эту информацию в объект XMLHttpRequest, а вылетает с ошибкой. Подскажите, можно ли это как-нибудь обойти? Чтобы я получал информацию, что 403, но при этом не было грубых ошибок. Может есть какой-то другой вариант, без XMLHttpRequest?

var xhr = new XMLHttpRequest();
xhr.open('GET', 'http://d11.cdnvideo.ru/slon3-test-stand/files/w320.webm', false);
xhr.send();

if (xhr.status == 403) {
  alert( xhr.status + ': ' + xhr.statusText );
} else {
  alert( xhr.responseText );
}
Ответить с цитированием
  #2 (permalink)  
Старый 29.08.2016, 16:59
Аспирант
Отправить личное сообщение для scrollquest Посмотреть профиль Найти все сообщения от scrollquest
 
Регистрация: 21.08.2016
Сообщений: 77

Нет там решения. Проблема не в xhr, там можно добавить заголовки вроде, проблема в том, что тот домен, на который идет запрос тоже должен разрешить этот запрос. А 403 тебе возвращается как раз потому, что сервер не позволяет кросдоменные запросы. Пробуй через фреймы делать, хотя фреймы сервер тоже может скипить

Последний раз редактировалось scrollquest, 29.08.2016 в 17:02.
Ответить с цитированием
  #3 (permalink)  
Старый 29.08.2016, 17:06
Аспирант
Отправить личное сообщение для scrollquest Посмотреть профиль Найти все сообщения от scrollquest
 
Регистрация: 21.08.2016
Сообщений: 77

tweentween1,
а вообще, зачем выдрачиваться с xhr, и клиентским кодом вообще, если данный вопрос решается со стороны бекэнда как 2 пальца обоссать?
Ответить с цитированием
  #4 (permalink)  
Старый 29.08.2016, 17:09
Аспирант
Отправить личное сообщение для scrollquest Посмотреть профиль Найти все сообщения от scrollquest
 
Регистрация: 21.08.2016
Сообщений: 77

И да, если нуден ответ не по конкретному запросу, а просто по домену, то можешь просто загрузить картинку или скрипт оттуда, через src и проверить, там нет ограничений на кросдоменные запросы как правило.
Ответить с цитированием
  #5 (permalink)  
Старый 29.08.2016, 17:16
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от scrollquest
данный вопрос решается со стороны бекэнда как 2 пальца
403 Forbidden - отказ выполнения запроса не обязательно из-за кроссдоменности.
Ответить с цитированием
  #6 (permalink)  
Старый 29.08.2016, 17:31
Новичок на форуме
Отправить личное сообщение для tweentween1 Посмотреть профиль Найти все сообщения от tweentween1
 
Регистрация: 29.08.2016
Сообщений: 5

scrollquest,
403 - это не проблема, а фича: сервер отдаёт её в случае гео-ограничения (после проверки). И нужно в этом случае (при ответе 403) выводить на экран вместо контента специальный текст. Архитектуру сервера (например, чтобы в случае гео-ограничения он передавал не 403, а какое-то сообщение) сейчас нет возможности изменить. Нужно как-то научиться обрабатывать 403.
Ответить с цитированием
  #7 (permalink)  
Старый 29.08.2016, 17:31
Аспирант
Отправить личное сообщение для scrollquest Посмотреть профиль Найти все сообщения от scrollquest
 
Регистрация: 21.08.2016
Сообщений: 77

laimas,
И что? ты не сможешь проверить с бекэнда, отдается ли 403?
Ответить с цитированием
  #8 (permalink)  
Старый 29.08.2016, 17:34
Аспирант
Отправить личное сообщение для scrollquest Посмотреть профиль Найти все сообщения от scrollquest
 
Регистрация: 21.08.2016
Сообщений: 77

tweentween1,
пробуй вариант с src тогда, который я выше предложил
Ответить с цитированием
  #9 (permalink)  
Старый 29.08.2016, 17:34
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от scrollquest
И что?
Ничего, просто если это разработчик закрыл прямой доступ к каталогу, то "как два пальца" не получиться ничем. Автору же нужно анализировать заголовки ответа, судя по вопросу, а не статус.

Последний раз редактировалось laimas, 29.08.2016 в 17:38.
Ответить с цитированием
  #10 (permalink)  
Старый 29.08.2016, 17:39
Новичок на форуме
Отправить личное сообщение для tweentween1 Посмотреть профиль Найти все сообщения от tweentween1
 
Регистрация: 29.08.2016
Сообщений: 5

Сообщение от Rise Посмотреть сообщение
Что за ошибка и где?
В консоли браузера:
Код:
geo.html:17 GET http://d11.cdnvideo.ru/slon3-test-stand/files/w320.webm 403 (Forbidden)(anonymous function)

geo.html:17 XMLHttpRequest cannot load http://d11.cdnvideo.ru/slon3-test-stand/files/w320.webm. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://127.0.0.1:81' is therefore not allowed access. The response had HTTP status code 403.
То есть браузер видит, что 403, но я не знаю, как узнать это внутри JS-кода
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как проверить наличие обработчика события на элементе? RioEiner jQuery 3 26.05.2016 23:31
Проверить наличие элемента на странице KonstantinK Элементы интерфейса 14 17.11.2013 13:16
Предполагается наличие ';' в IE7- FINoM (X)HTML/CSS 5 25.08.2012 16:05
как проверить наличие элементов в объекте? гвоздик Общие вопросы Javascript 4 30.10.2009 11:33
Проверить наличие меню/панели инструментов/адресной строки/статуса Ruark Internet Explorer 8 06.05.2009 23:31