从服务器端我需要终止/中止请求而不对客户端做出任何响应,如 nginx's 444 .
从客户端看,它应该看起来像连接被对等方重置。
最佳答案
我花了几个小时,只是无意中发现了 http.Hijacker,它允许从 http.ResponseWriter 访问网络连接:
h := func(w http.ResponseWriter, r *http.Request) {
if wr, ok := w.(http.Hijacker); ok {
conn, _, err := wr.Hijack()
if err != nil {
fmt.Fprint(w, err)
}
conn.Close()
}
}
在某些情况下,终止连接可能有助于节省 CPU 时间和出站流量。
关于戈朗 : How to terminate/abort/cancel inbound http request without response?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36483750/
这个问题在这里已经有了答案:YouhavealreadyactivatedX,butyourGemfilerequiresY(11个答案)关闭8年前。我遇到了错误rakedb:migrate--tracerakeaborted!Youhavealreadyactivatedrake10.1.1,butyourGemfilerequiresrake10.1.0.Usingbundleexecmaysolvethis./Users/iang/.rvm/gems/ruby-2.0.0-p247@global/gems/bundler-1.3.5/lib/bundler/runtime.rb:
当我尝试在我的Rails3.1应用程序上执行railss时,我得到:/Users/Kyle/.rvm/gems/ruby-1.9.2-p290@skateparks/gems/rack-1.3.4/lib/rack/backports/uri/common_192.rb:53:warning:alreadyinitializedconstantWFKV_/Users/Kyle/.rvm/gems/ruby-1.9.2-p290@skateparks/gems/eventmachine-0.12.10/lib/rubyeventmachine.bundle:[BUG]Segmentati
abort文档说abort将Terminateexecutionimmediately,effectivelybycallingKernel.exit(false).“立即”到底是什么意思?abort和非true状态的exit有什么区别? 最佳答案 "Exit,Exit!Abort,Raise…GetMeOuttaHere!"描述了我认为您想知道的一切。简而言之:Kernel.exit(code)立即“退出”脚本并返回code然而,就在操作系统之前,它会调用任何已注册的at_exit您的代码可能已注册的处理程序。Kernel.exi
我已经阅读了很多博客文章,其中提供了IE中“操作中止”错误的原因和解决方案。我最近构建了一个应用程序,有时会为某些用户出现此错误。让我详细解释一下。该应用程序是在VS2008中构建的.NET2.0、ASP.NET和C#Web应用程序。它使用ComponentOneWeb控件以及标准的VisualStudio控件。在其中一个网页中,我让用户在一组ComponentOneWeb输入控件中键入输入,然后将其添加到集合中。集合绑定(bind)到中继器,每次在集合中创建新条目时,中继器都会反弹。如果用户从转发器中删除条目(使用命令按钮),集合将更新并重新回到转发器。当应用程序提交给最终用户进行测
我目前正在编写API代码,其中包含多层深度的$.ajax()调用。一个要求是用户必须能够取消任何请求(例如,如果它花费的时间太长)。通常这是通过一些简单的事情来完成的,比如:varjqXHR=$.ajax(..);$(mycancelitem).click(function(){jqXHR.abort();});但是我的代码看起来更像这样:functionmyapicall(){varjqxhr=$.ajax(…);varprms=def.then(function(result){//modifytheresultherereturnresult+5;});returnprms;}这
在我的gulp构建中,如果我的服务器单元测试失败,我想“中止”构建过程,但我不确定如何完成此操作。目前,我正在使用Node的request模块来运行一些服务器端单元测试,如下所示:gulp.task("run-server-tests",function(){varserverTestUrl="http://myurl";//returnstestresultsinjsonformatrequest(serverTestUrl,function(error,response,body){varresponseData=JSON.parse(body);if(responseData.i
我正在尝试使用react-hot-loader设置webpack热重载。它大部分似乎都在工作。我在现有的Rails应用程序中使用webpack。但这不是热重载。每次更改我的react代码时,它都会触发重新加载。我收到的错误消息是:[HMR]Cannotapplyupdate.Needtodoafullreload!-dev-server.js:18[HMR]Error:Abortedbecause0isnotaccepted-dev-server.js:19athotApply(http://localhost:8080/assets/webpack/bundle.js?body=1:
关闭。这个问题需要更多focused.它目前不接受答案。想改进这个问题吗?更新问题,使其只关注一个问题editingthispost.关闭3年前。Improvethisquestion告诉我如何使用Golang登录网站。下载xls文件是得到了,但是为了在Excel表格中有数据,需要登录网站。该站点位于公司的服务器上。如果你能告诉你怎么做。例如,我用来执行此操作的VBA代码。SetoFields=CreateObject("Scripting.Dictionary")WithoFields.Add"login","sdiscor".Add"password","sdiscor"EndWi
下面是我查询的代码:我有一个单维数组a当我打印a[0][0]时,我不明白为什么它返回字符a的ascii值:packagemainimport("fmt")funcmain(){a:=[3]string{"a","b","c"}fmt.Println(a[0][0])}输出:97 最佳答案 下面是如何打印ascii的代码示例a:=[3]string{"a","b","c"}for_,rune:=rangea{fmt.Println(rune)//Itwillprinta,b,c}因为你在你的代码中使用了[0][0],所以它是等价的fo
typepath[]bytefunc(ppath)ToUpper(){fori,b:=rangep{if'a'在上面(这个例子是从“TheGoBlog”复制过来的),如果ToUpper变成这样:func(ppath)ToUpper(){fori,_:=rangep{if'a'哪个会更有效率为什么?“TheGoBlog”对前一个说:“这里的ToUpper方法在forrange构造中使用两个变量来捕获索引和slice元素。这种形式的循环避免了在主体中多次写入p[i]。”什么意思? 最佳答案 前者有更多的内存操作,即在b上:它在循环的第一