我克隆了使用节点的角种子,http-server它使用以下配置完美地工作.
命令:npm start(来自项目的根目录)
在package.json文件中配置:
"start": "http-server -a localhost -p 8000 -c-1",
Link to file
Run Code Online (Sandbox Code Playgroud)
但是我无法直接启动此服务器.例如:从项目的根目录,这些命令都不起作用:
> angular-seed npm http-server
> angular-seed node http-server
> angular-seed http-server
Run Code Online (Sandbox Code Playgroud)
这个(http服务器)不应该在这里可用(root,从哪里安装)?有人可以解释一下它是如何工作的,以及我如何直接从项目的根目录中使用它.
如果我在全球范围内安装它,我相信它会正常工作,但我对此并不感兴趣.
我想创建一个在用户计算机上运行的应用程序,一个独立的应用程序,安装和什么不是,但我希望该界面是一个浏览器,内部和显示为操作系统窗口或外部可访问浏览器(即一些http服务器).
原因是因为我对Python有一点了解,但我想我可以管理,只要我有一些我可以使用和操作的基本根,那些就是HTML,CSS和Javascript.
我还没有找到一个好的GUI工具,我可以使用它,并且在试图弄乱并最终没有得到任何东西之后总是放弃这个想法.
我收到一个"此处不允许的位置"错误.htaccess.
有没有人知道我应该如何解决这个问题?
<Files 'login'>
AuthName NTLM
AuthType NTLM
NTLMAuth on
NTLMAuthoritative on
NTLMServer <censored>
NTLMBackup <censored>
NTLMLockfile <censored>
require valid-user
Satisfy all
</Files>
<Location /alarms/[0-9]+/acknowlege>
Order deny,allow
Deny from all
Allow from localhost
</Location>
Run Code Online (Sandbox Code Playgroud) 该示例性的HTTP服务器并不为我工作.源代码:
package main
import (
"fmt"
"net/http"
)
func handler(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hi there, I love %s!", r.URL.Path[1:])
}
func main() {
http.HandleFunc("/", handler)
http.ListenAndServe("127.0.0.1:8080", nil)
}
Run Code Online (Sandbox Code Playgroud)
当我尝试连接所有我得到的是:
$ curl 127.0.0.1:8080
curl: (7) Failed to connect to 127.0.0.1 port 8080: Operation timed out
$ nc -v -G 5 127.0.0.1 8080
nc: connectx to 127.0.0.1 port 8080 (tcp) failed: Operation timed out
Run Code Online (Sandbox Code Playgroud)
虽然nc尝试连接tcpdump只显示SYN数据包:
$ tcpdump -i lo0 port 8080
tcpdump: verbose output suppressed, use -v or …Run Code Online (Sandbox Code Playgroud) 我正在尝试做这个Matasano加密挑战,涉及对人为减慢字符串比较功能的服务器进行定时攻击.它说使用"你选择的web框架",但我不想安装Web框架,所以我决定使用模块中内置的HTTPServer类http.server.
我想出了一些工作,但它是非常缓慢的,所以我尝试使用内置的(不良的记录)线程池来加速这一过程multiprocessing.dummy.它的速度要快得多,但我注意到一些奇怪的事情:如果我同时发出8个或更少的请求,它就可以了.如果我有更多,它会工作一段时间,并在看似随机的时间给我错误.这些错误似乎是不一致的,而不是总是相同的,但他们通常有Connection refused, invalid argument,OSError: [Errno 22] Invalid argument,urllib.error.URLError: <urlopen error [Errno 22] Invalid argument>,BrokenPipeError: [Errno 32] Broken pipe,或urllib.error.URLError: <urlopen error [Errno 61] Connection refused>在其中.
服务器可以处理的连接数有限制吗?我不认为线程本身的数量是问题,因为我编写了一个简单的函数,它在没有运行Web服务器的情况下进行了减慢的字符串比较,并使用500个并发线程调用它,并且它工作正常.我不认为只是从那么多线程发出请求就是问题所在,因为我已经使用了超过100个线程的爬虫(都同时向同一个网站发出请求)并且它们工作正常.看起来HTTPServer可能并不是为了可靠地托管能够获得大量流量的生产网站,但我很惊讶它很容易让它崩溃.
我尝试逐渐从我的代码中删除看起来与问题无关的东西,正如我在诊断这样的神秘错误时通常所做的那样,但在这种情况下这并不是很有帮助.看起来我正在删除看似无关的代码,服务器可以处理的连接数量逐渐增加,但没有明确的崩溃原因.
有谁知道如何增加我一次可以提出的请求数量,或者至少为什么会发生这种情况?
我的代码很复杂,但我想出了这个简单的程序来演示这个问题:
#!/usr/bin/env python3
import os
import random
from http.server import BaseHTTPRequestHandler, HTTPServer
from multiprocessing.dummy import Pool as ThreadPool
from socketserver import ForkingMixIn, ThreadingMixIn
from threading import Thread
from time import sleep
from urllib.error import HTTPError …Run Code Online (Sandbox Code Playgroud) 我试图在Java中创建一个简单的HttpServer来处理GET请求,但是当我尝试获取请求的GET参数时,我注意到HttpExchange类没有方法.
有没有人知道一种简单的方法来读取GET参数(查询字符串)?
这是我的处理程序的样子:
public class TestHandler{
@Override
public void handle(HttpExchange exc) throws IOxception {
String response = "This is the reponse";
exc.sendResponseHeaders(200, response.length());
// need GET params here
OutputStream os = exc.getResponseBody();
os.write(response.getBytes());
os.close();
}
}
Run Code Online (Sandbox Code Playgroud)
..和主要方法:
public static void main(String[] args) throws Exception{
// create server on port 8000
InetSocketAddress address = new InetSocketAddress(8000);
HttpServer server = new HttpServer.create(address, 0);
// bind handler
server.createContext("/highscore", new TestHandler());
server.setExecutor(null);
server.start();
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试Martini,它在Go的基本net/http软件包上添加了一些不错的功能.
我想知道.我怎么能像Django一样,让服务器在源文件更改时重启?我知道如何监视文件,但我不确定如何在同一进程中重新触发服务器.
我猜想http.ListenAndServe再次触发,但我感觉它已经运行的实例不顺利.
我是否需要生成子进程/守护进程才能使其正常工作?
我的问题是关于与PM2一起运行HTTP服务器.
我面临的问题是:
所以我尝试了以下(请注意应该将参数传递给HTTP服务器脚本的双破折号:
/node_modules/http-server/lib$ pm2 start http-server.js -- /home/unixuser/websiteroot -p8686
Run Code Online (Sandbox Code Playgroud)
但它不起作用.
我也尝试过:
http-server /home/unixuser/websiteroot -p8686
Run Code Online (Sandbox Code Playgroud)
哪个有效,但没有pm2的大力支持?
任何建议都会很棒,谢谢!
你如何http-server从npm脚本开始后台,以便另一个npm脚本,如使用jsdom的Mocha测试,可以发出HTTP请求http-server?
该http-server软件包安装时:
npm install http-server --save-dev
Run Code Online (Sandbox Code Playgroud)
该package.json文件包含:
"scripts": {
"pretest": "gulp build-httpdocs",
"test": "http-server -p 7777 httpdocs/ && mocha spec.js"
},
Run Code Online (Sandbox Code Playgroud)
运行npm test成功启动http-server,但当然命令在显示后挂起:
Starting up http-server, serving httpdocs/
Available on:
http://127.0.0.1:7777
http://192.168.1.64:7777
Hit CTRL-C to stop the server
Run Code Online (Sandbox Code Playgroud)
是否有一种简单的方法来启动Web服务器,因此它不会阻止Mocha测试?
额外奖励:http-server摩卡测试结束后你如何关闭?
我使用简单的HTTP Server BaseHTTPRequestHandler.问题是,当我想使用来自客户端的请求发布一些数据时,我得到了ConnectionError.我从requestslib文档做了简单的请求.同样有趣的是,HTTP Server将从客户端接收数据并将其打印到控制台.我不明白它是如何可能的.
客户:
def post_data():
"""Client method"""
json_data = {
'sender': 'User',
'receiver': 'MY_SERVER',
'message': 'Hello server! Sending some data.'}
data_headers = {'Content-type': 'application/json', 'Accept': 'text/plain'}
data_payload = json.dumps(json_data)
try:
post = requests.post('http://localhost:8080/post', data=data_payload,
headers=data_headers)
print(post.status_code)
except ConnectionError as e:
print("CONNECTION ERROR: ")
print(e)
Run Code Online (Sandbox Code Playgroud)
HTTP服务器:
def do_POST(self):
"""Server method"""
self.send_response(200)
print("Receiving new data ...")
content_length = int(self.headers['Content-Length'])
post_data = self.rfile.read(content_length)
print(post_data)
Run Code Online (Sandbox Code Playgroud)
服务器结果:
C:\Users\mypc\Projects\PythonFiles\httpserver>python server.py
Fri Jan 5 01:09:12 2018: HTTP Server started on …Run Code Online (Sandbox Code Playgroud) httpserver ×10
python ×3
go ×2
node.js ×2
npm ×2
apache ×1
browser ×1
desktop ×1
get ×1
java ×1
javascript ×1
macos ×1
martini ×1
networking ×1
pm2 ×1
python-3.x ×1
query-string ×1
sockets ×1
urllib ×1