86

Từ các phiên bản trước của câu hỏi, có điều này: Browse website with ip address rather than localhost, trong đó phác thảo khá nhiều những gì tôi đã làm cho đến nay ... Tôi đã có IP địa phương làm việc. Sau đó, tôi tìm thấy ngrok, và dường như tôi không cần phải kết nối thông qua IP.Hiển thị localhost tới internet qua đường hầm (sử dụng ngrok): Lỗi HTTP 400: yêu cầu không hợp lệ; tên máy chủ không hợp lệ


Điều tôi đang cố gắng làm là hiển thị trang web của tôi đang chạy trên máy chủ cục bộ với internet. Tôi tìm thấy một công cụ sẽ làm điều này: ngrok.

Chạy trang web trong studio trực quan, trang web khởi động trên localhost/port #. Tôi chạy lệnh "ngrok http port #" trong dòng lệnh. Mọi thứ dường như bắt đầu tốt đẹp. Tôi tạo một vài URL và url kiểm tra ngrok (localhost: 4040) hoạt động.

Vấn đề duy nhất là khi tôi truy cập URL được tạo, tôi nhận được lỗi HTTP 400: tên máy chủ không hợp lệ yêu cầu không hợp lệ. Đây là một lỗi khác so với khi tôi chạy "ngrok http wrongport #", đây là lỗi máy chủ không tìm thấy ... vì vậy tôi nghĩ có điều gì đó tốt đang xảy ra. Tôi chỉ không thể nói điều gì ...

Tôi có thiếu một bước nào khi hiển thị trang web của mình với internet thông qua dịch vụ đường hầm không? Nếu có, tôi không thể tìm thấy nó trong tài liệu ngrok.

Trả lời

237

Khắc phục sự cố này với ngrok. Trong những từ không thể giải quyết được, một số ứng dụng trở nên tức giận khi họ nhìn thấy một tiêu đề máy chủ khác so với dự kiến.

Chạy lệnh sau đây sẽ khắc phục vấn đề này:

ngrok http [port] -host-header="localhost:[port]" 

tuy nhiên , điều này có thể không phải là một sửa chữa toàn diện (hình như ít nhất một trường hợp khác nhau có thể gây ra vấn đề này), vì vậy hãy kiểm tra câu trả lời khác well

+1

Cảm ơn. Trước đây tôi đã làm theo hướng dẫn từ Devin Rader chi tiết ở đây, nhưng điều này bây giờ làm cho cách này dễ dàng hơn. https://www.twilio.com/blog/2014/03/configure-windows-for-local-webhook-testing-using-ngrok.html – sobelito

+0

Giải pháp này cũng hoạt động nếu bạn gặp sự cố khi thêm một ràng buộc khác vào applicationHost. config (vs2015/iisexpress). Bạn không cần phải thêm một chỉ sử dụng câu trả lời này. Cuối cùng, nếu bạn trả tiền cho một miền tùy chỉnh để tránh thay đổi địa chỉ mỗi lần chỉ cần thêm -subdomain = mysubdomain vào câu trả lời ở trên. – trevorc

+0

Tricky được giải quyết cho tôi! :) – mthama

19

Điều này không hiệu quả đối với tôi. bạn có thể làm như sau:

Đối với IIS nhanh

Trong VS 2015: Chuyển đến thư mục .vs\config\applicationhost.config trong dự án của bạn

Trong VS 2013 và trước đó: Tới %USERPROFILE%\My Documents\IISExpress\config\applicationhost.config

Tìm ràng buộc có nội dung:

<binding protocol="http" bindingInformation="*:5219:localhost" /> 

Đối với tôi nó là một dự án chạy trên cổng 5219

thay đổi nó để

<binding protocol="http" bindingInformation="*:5219:" /> 

IIS Express bây giờ sẽ chấp nhận tất cả các kết nối đến trên cổng đó.

Bất lợi: bạn cần chạy IIS Express làm quản trị viên.

hoặc bạn có thể viết lại tiêu đề máy chủ trong Ngrok:

ngrok.exe http -host-header=rewrite localhost:5219 
9

lệnh sau sẽ khắc phục vấn đề

ngrok http -host-header=localhost 8080 
Các vấn đề liên quan