我在搜索有关此错误的所有现有主题后写这篇文章。毫无疑问,它帮助我理解了这个错误,但不幸的是,我无法解决我的问题。我想将一个角度应用程序生成的pdf文件上传到我的服务器,我正在关注this代码。最初我得到错误" XMLHttpRequest无法加载。 No' Access-Control-Allow-Origin'标头出现在请求的资源上。起源' http://localhost:8080'因此不允许访问。"
要解决此问题,我使用以下代码在c:/ wamp / www / location上创建.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>
&#13;
现在我收到以下错误:
_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/
FYI-文件上传到服务器上的临时文件夹中,但类型为&#39; file&#39;而不是&#39; pdf&#39;并且图像在pdf中不能正确呈现。添加的文本正常呈现。
答案 0 :(得分:0)
您可以向Express添加中间件以添加这些标头:
(在你的JsFiddle中,这是第43行。)
app.use(function (req, res, next) {
var pattern = /.(ttf|otf|eot|woff|jpg|png|jpeg|gif|js|json|html|css|pdf)/
if (pattern.test(req.url)) {
res.setHeader('Access-Control-Allow-Origin', '*');
res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE');
res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type');
res.setHeader('Access-Control-Allow-Credentials', true);
}
next();
});
如果请求包含提供的正则表达式,这将查看所有传入请求并添加CORS标头。
然后您可以删除.htaccess文件。
答案 1 :(得分:0)