webpack Неверный заголовок хоста при доступе из домена, а не через IP - PullRequest
0 голосов
/ 25 сентября 2018

Я настроил доменное имя для моего сервера, к которому я некоторое время обращался по IP, но сейчас я пытаюсь получить к нему доступ через доменное имя.Когда я просматриваю его с IP-адреса, мое приложение реакции работает нормально, однако, когда я пытаюсь пройти через домен, оно говорит «Недопустимый заголовок хоста».

В моем веб-пакете есть (и я попробовал все варианты онлайн, чтобы попробовать):

devServer: {
        historyApiFallback: true,
        inline: true,
        hot: true,
        overlay: true,
        disableHostCheck: true,
        port: 80,
        host: '0.0.0.0',
        allowedHosts: [
            '.oribar.com',
            'oribar.com',
            'localhost',
            '0.0.0.0'
        ]
    },

Ответы [ 2 ]

0 голосов
/ 03 октября 2018

Попробуйте это

devServer: {
  // ... other options
  public: 'oribar.com:80'
},
0 голосов
/ 03 октября 2018

При использовании приложения create-реагировать я также столкнулся с аналогичной проблемой.Я предоставлю решение, которое вы можете использовать, чтобы решить эту проблему, если вы не используете create-реагировать на приложение или извлекли его, которое не оставляет никаких следов его присутствия, я дам ссылки на код с открытым исходным кодом, который исправилэто, и вы можете следовать, чтобы найти решение.

Решение было создать файлы с именем

.env.development

HOST=ec2-13-121-203-43.ap-south-1.compute.amazonaws.com

.env.development.local

DANGEROUSLY_DISABLE_HOST_CHECK=true

.env.local

HOST=ec2-13-121-203-43.ap-south-1.compute.amazonaws.com

Код create-react-app с открытым исходным кодом, и компонент, который настраивает эти заголовки, находится в зависимости react-scripts npm в package.json Код с открытым исходным кодом здесь .

Здесь - это проблема Github, частью которой я (devssh) решил эту проблему

Здесь является надлежащей документацией для того, что вы должны делать.

Причина, по которой я знаю, что кто-то использовал create-реакции-приложение или извлек из него при создании вашего проекта, заключается в том, что вы упомянули ошибку Invalid host header есть только в этом сценарии, где они должны бытьпеть общие библиотеки http.При извлечении из приложения вы получаете контроль над сценариями веб-пакета.

Команда безопасности в приложении create-реагировать на приложения добавила этот заголовок, чтобы отговорить людей, которые не понимают безопасность, с помощью различных заголовков, таких какCORS, а также для получения согласия, чтобы отключить проверку.Чтобы узнать больше о заголовках безопасности здесь - это руководство внизу страницы, у вас есть ссылки на заголовки.

Ошибка возникает из-за того, что в их коде есть условие if, при котором они проверяют наличие перекрестных запросов, и, если доменное имя не совпадает, они поднимают эту ошибку и воспринимают ее как злоумышленника, пытающегося получить доступ к приложению.поэтому они блокируют запрос и не отправляют bundle.js.

Мне также пришлось добавить "proxy": "http://0.0.0.0:8080", в мой package.json.Вот мой полный пакетВы можете просмотреть конфигурацию веб-пакета внутри папки конфигурации, если вы изменили свою собственную, существенно что-то сломав.

Также следуйте документации, которую я предоставил ранее, если вы используете HTTPS, чтобы включить это!Если вы пытаетесь воссоздать то, что делает create-реакции-приложение, самостоятельно, следуя заголовку HOST в их открытом исходном коде, вы сможете увидеть место, которое они проверяют, и поднять Invalid Host header и соответственно отредактировать вашу конфигурацию.

Альтернатива:

Здесь - еще одна проблема SO , которая решает проблему путем изменения конфигурации своего devServer.Они исправили следующее в своем веб-пакете devServer

disableHostCheck: true

или

public: 'dns-here.com'

Если вы используете его с флагом --production, возможно, вам придется отключить проверку хоста или добавитьдомен по умолчанию в вашем prod.webpack.yml или укажите его как флаг при запуске приложения реакции, как показано в этой проблеме github , которая предлагает добавить --public your-host:8080 или множество других возможных исправлений.

Если это не помогло устранить проблему, оставьте комментарий с проблемой, и я обновлю ее соответствующим образом.:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...