【发布时间】:2016-02-11 16:24:47
【问题描述】:
我在搜索了有关此错误的所有现有主题后写了这篇文章。毫无疑问,它对我理解这个错误有很大帮助,但不幸的是,我无法解决我的问题。我想将从 Angular 应用程序生成的 pdf 文件上传到我的服务器,我正在关注 this 代码。最初我收到错误,因为“XMLHttpRequest 无法加载。请求的资源上不存在 'Access-Control-Allow-Origin' 标头。因此不允许访问 Origin 'http://localhost:8080'。”
为了解决这个问题,我使用以下代码在 c:/wamp/www/ 位置创建 .htaccess 文件。 (注意——我使用的是 WAMP 服务器)
`
<FilesMatch "\.(ttf|otf|eot|woff|jpg|png|jpeg|gif|js|json|html|css|pdf)$">
<IfModule mod_headers.c>
Header set Access-Control-Allow-Origin "*"
</IfModule>
</FilesMatch>
现在我遇到以下错误:
_http_outgoing.js:335
throw new Error('Can\'t set headers after they are sent.');
^
Error: Can't set headers after they are sent.
at ServerResponse.OutgoingMessage.setHeader (_http_outgoing.js:335:11)
at ServerResponse.header (C:\node_apps\pp_app\node_modules\express\lib\respo
nse.js:718:10)
at ServerResponse.send (C:\node_apps\pp_app\node_modules\express\lib\respons
e.js:163:12)
at IncomingForm.<anonymous> (C:\node_apps\pp_app\index.js:18:25)
at IncomingForm.emit (events.js:129:20)
at IncomingForm._maybeEnd (C:\node_apps\pp_app\node_modules\formidable\lib\i
ncoming_form.js:553:8)
at C:\node_apps\pp_app\node_modules\formidable\lib\incoming_form.js:230:12
at WriteStream.<anonymous> (C:\node_apps\pp_app\node_modules\formidable\lib\
file.js:70:5)
at WriteStream.g (events.js:199:16)
at WriteStream.emit (events.js:129:20)
出现此错误后,节点服务器结束,因此我在应用程序控制台上得到 net::ERR_CONNECTION_RESET。我知道我做错了什么,但由于我是 node.js 和 express.js 的新手,所以无法理解它在哪里以及如何做。
你能帮忙吗!
客户端和服务器端代码:https://jsfiddle.net/0paL9bfb/5/
仅供参考-文件已上传到服务器上的临时文件夹中,但类型是“文件”而不是“pdf”,并且图像在 pdf 中未正确呈现。添加的文本渲染良好。
【问题讨论】:
-
Can\'t set headers after they are sent. 仅表示您发送响应标头,如 res.end() 或类似 more 不止一次,这显然是不正确的。
-
@loadaverage :但是在我的代码中,我没有多次使用响应标头。它只有一次...“res.status(200).send("thank you");"让我很困惑如何解决它。
标签: node.js pdf express file-upload