Ответ 1
Итак, мы думаем о добавлении нулевого значения в разрешенное происхождение. Это лучше, так как это заблокирует каждый другой веб-сайт, пытающийся извлечь наш API, но он позволит любым мобильным приложениям получать его...
Хорошо, если вы это сделаете, тогда вы разрешаете запросы из кода JavaScript, которые запускаются из любого источника, отличного от http/https, который включает любого, кто работает с URL-адресом file://
или даже data:
.
Итак, если вы используете ограничительную политику CORS для "соображений безопасности", то отправка ответов с заголовком Access-Control-Allow-Origin: null
звучит как довольно плохая идея.
Нам нужно поддерживать безопасность сервера API с ограничением CORS: Все найденные решения говорят мне разрешить все происхождение:
*
, но это будет большой сбой безопасности для нашего API.
Вы не объясните, почему вы определили, что это будет сбой безопасности или почему вам нужно иметь ограничительную политику CORS. Но если (1) ваш веб-сервер не работает в интрасети или за каким-то другим видом брандмауэра, и (2) доступ к ресурсам в противном случае ограничивается только IP-аутентификацией, то вы ничего не получите от использования ограничительной политики CORS. В укажите спецификацию:
Базовая безопасная настройка протокола CORS
Для ресурсов, где данные защищены с помощью IP-аутентификации или брандмауэра (к сожалению, все еще довольно часто), использование протокола CORS небезопасно. (Вот почему должен был быть разработан протокол CORS.)
Однако в противном случае использование следующего заголовка безопасно:
Access-Control-Allow-Origin: *
Даже если ресурс предоставляет дополнительную информацию на основе cookie или HTTP-аутентификации, использование этого заголовка не покажет его. Он будет совместно использовать ресурс с API-интерфейсами, такими как
XMLHttpRequest
, так же, как он уже делится сcurl
иwget
.Таким образом, если ресурс не может быть доступен из произвольного устройства, подключенного к сети, используя
curl
иwget
, вышеупомянутый заголовок не должен быть включен. Если это можно получить, однако, это совершенно нормально.