Tại sao tôi cần một máy chủ cục bộ để phát triển trò chơi HTML5?


7

Tôi mới phát triển trò chơi HTML5. Tôi đang cố gắng tạo một cái gì đó bằng Pixi.js, nhưng khi tôi cố gắng xem nó trong trình duyệt, tôi thấy một trang trống. Dựa theo hướng dẫn tôi đang làm , tôi cần thiết lập một máy chủ cục bộ. Tôi không chắc tại sao tôi cần phải làm điều đó, mặc dù.

Bạn có thể vui lòng cho tôi biết lý do tại sao tôi cần một máy chủ cục bộ để chạy các tệp HTML trên trình duyệt của mình không?


Đối với html chung, bạn không cần máy chủ cục bộ và bạn chỉ cần chạy tệp trong trình duyệt của mình. Javascript là tất cả phía máy khách, vì vậy bạn có thể làm mọi thứ bên trong trình duyệt. Các ngôn ngữ khác là phía máy chủ, như php và chúng yêu cầu máy chủ. Ai đang nói với bạn rằng bạn cần một máy chủ cục bộ?
ultifinitus

1
Tôi đoán là tôi đã đọc nhầm ở đâu đó và nghiền nát một loạt thông tin. Tôi đã cố tải Pixi.js nhưng kết quả là một trang trống. Tôi cũng đang theo hướng dẫn này ( flippinaw đũa.org / 2013/04/04 ), nơi anh ấy nói để thiết lập một máy chủ cục bộ
Câu hỏi-Mọi thứ

Đó là một ý tưởng không tồi khi có một máy chủ cục bộ (có thể là một cái gì đó như xampp thay vì apache trần) vì môi trường sẽ phù hợp khi bạn khởi chạy trang web sản xuất của mình. Nhưng bạn chắc chắn không cần!
ultifinitus

1
Bạn không cần một tính năng cơ bản, nhưng bạn làm rất nhiều thứ cụ thể (ví dụ: cách trình duyệt truy cập vào một số tài nguyên nhất định), vì vậy chỉ cần tải xuống xampp từ www.apachefriends.org và được thực hiện với nó.
jhocking

Câu trả lời:


12

Trình duyệt web vô hiệu hóa một số tính năng Javascript vì lý do bảo mật.

Đặt cược của tôi là bạn chỉ cần nhấn Google Chrome XMLHttpRequestvào các tệp cục bộ theo mặc định (xem câu trả lời này trên SO để biết cách vô hiệu hóa điều đó, nhưng hãy cẩn thận: điều này rất nguy hiểm). Xem trang này trên trang dev của Chrome để biết chi tiết.

Đây là lý do tại sao bạn phải thiết lập máy chủ HTTP cục bộ để khắc phục khóa bảo mật.


2

Nếu bạn chỉ mở tệp gốc của trò chơi htmltrong trình duyệt, trình duyệt của bạn sẽ (hy vọng) không cho phép trang đó truy cập bất kỳ tệp nào khác. Đây là một tính năng bảo mật nhằm hạn chế thiệt hại từ các tập lệnh độc hại.

Nếu bạn cảm thấy thoải mái trên một dòng lệnh và đã cài đặt phiên bản Python 2, một cách dễ dàng để chạy một máy chủ web cục bộ là thay đổi thư mục gốc mong muốn và chạy

python -m SimpleHTTPServer

phục vụ nội dung của thư mục hiện tại trên localhostcổng 8888, như được ghi lại ở đây . Các thư mục con được phục vụ, các thư mục mẹ không có , vì vậy mọi thứ được chứa độc đáo.

Tương đương Python 3 python -m http.server . (Cảm ơn Mike !)


2
Nếu bạn đang chạy Python 3 thì bạn sẽ muốn sử dụng python -m http.server [port] nguồn
Mike Cluck

1

Tôi đã có vấn đề tương tự bản thân mình trong quá khứ.

Trang phục vụ

Những gì tệp HTML của bạn có thể làm là gửi các yêu cầu HTTP đến Localhost để tải tài nguyên (như Pixi.js), chứ không thực sự yêu cầu các tệp. Nếu không, Pixi.js có thể tự làm điều đó.

Đây là hành vi hữu ích trên máy chủ web, vì một số điều mà nó có thể yêu cầu có thể được tạo một cách linh hoạt, khác nhau khi phản hồi với cookie hoặc tương tự. XMLHttpRequests thường đi đến loại nội dung động này và trong trường hợp này, máy tính xử lý yêu cầu cần biết phải làm gì với tệp để tạo phản hồi thích hợp. (Nếu họ không làm như vậy, thì các kịch bản phía máy chủ sẽ không thể chạy, bạn chỉ cần lấy một bản sao của tệp.) Đó là những gì máy chủ web có ở đó để xử lý.

Mặt trái

Tương tự, bạn có muốn các trang từ internet có thể truy cập tất cả các tệp cục bộ của mình không? Chạy các kịch bản tùy ý khi họ thấy phù hợp? Như các câu trả lời khác đã ngụ ý, đó là một rủi ro bảo mật rất lớn. Đó là lý do tại sao nó bị tắt theo mặc định. Bằng cách thiết lập một máy chủ web, bạn có thể cho phép truy cập vào các tệp cụ thể chứ không phải các tệp khác, cũng như chỉ định cách mọi thứ được truy cập hoặc chạy.

Phải làm sao

Trong trường hợp của bạn, nó không tiện dụng như vậy. Nếu có một máy chủ web được đề xuất trong hướng dẫn, tôi sẽ sử dụng nó. Nếu không, tôi sử dụng Lighttpd. Ngoài ra còn có con trăn SimpleHTTPServer được đề cập trong một câu trả lời khác.

Hi vọng điêu nay co ich.


0

Do cài đặt bảo mật mặc định của trình duyệt

Trình duyệt web có một số cài đặt bảo mật bổ sung khi xem trang HTML từ bộ nhớ cục bộ (như mở tệp HTML bằng trình duyệt của bạn). Một phần của các cài đặt này là không cho phép các yêu cầu AJAX (javascript yêu cầu các trang khác). Một phần của điều này phải làm là các yêu cầu AJAX luôn nằm trong cùng một miền ( http://example.com chỉ có thể thực hiện các yêu cầu AJAX trên http://example.com ) và tệp HTML cục bộ không có tên miền.

Có thể khung trò chơi HTML5 của bạn yêu cầu tài sản của nó thông qua AJAX để phản ứng nhanh hơn.

Bằng cách khởi động máy chủ web cục bộ để phục vụ các tệp, trình duyệt có một miền để phạm vi các yêu cầu AJAX khác nhau để phù hợp với logic bảo mật của trình duyệt.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.