我终于遇到了一个超出我技能的问题,内部没有人对手头的问题非常熟悉。我的问题是我正在尝试使用windows 7/8
工作的grunt服务器/服务器来替换我们当前的nginx配置以进行开发。
如果我的angularjs
前端和grails
后端都在本地运行,那么我没有遇到任何问题,但是当我想通过grunt在本地运行我的angularjs应用并让它说话时到我们在test.domain.net上部署的后端我收到了代理错误:ECONNRESET error
。
我尝试了3个版本的grunt-contrib-connect (0.1.10, 0.1.11, 0.2.0)
; 10和11有不同的错误,但2是我喜欢的,是什么投掷ECONNRESET。
对我来说似乎特别奇怪的是,使用--stack --verbose它声称我通过代理重定向但是当我查看chrome中的url时它仍然使用本地主机。
当前错误
> Proxied request: /app/orders?limit=15&offset=0 ->
> https://services-test.app.com:443/orders?limit=15&offset=0
> {
"host": "services-test.app.com", "connection": "keep-alive",
> "cache-control": "max-age=0", "accept": "application/json,
> text/plain, */*", "x-auth-token":
> "3an7h1oupnj6e7shfplf06adn8mr8q26", "if-modified-since": "0",
> "user-agent": "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36
> (KHTML, like Gecko) Chrome/43.0.2357.81 Safari/5
> 37.36", "referer": "http://localhost:9000/", "accept-encoding": "gzip, deflate, sdch", "accept-language": "en-US,en;q=0.8",
> "cookie": "_ga=GA1.1.1146585466.1432141723;
> JSESSIONID=5569C3D1BDC2CA2CBF5B72636A9338F4", "x-forwarded-for":
> "127.0.0.1", "x-forwarded-port": "80", "x-forwarded-proto": "http"
> }
> Proxy error: ECONNRESET
Gruntfile.js的相关部分(为隐私而修改的网址)
// The actual grunt server settings
connect: {
options: {
port: 9000,
// Change this to '0.0.0.0' to access the server from outside.
hostname: 'localhost', //'0.0.0.0',
livereload: 35729
},
proxies: [
{
//context: '/api',
//host: 'localhost',
//port: 8080,
//https: false,
//changeOrigin: false,
//xforward: false
context: '/api',
host: 'services-test.app.com',
https: true,
port: 443,
xforward: true,
headers: {
'host': 'services-test.app.com',
'x-auth-token': '3an7h1oupnj6e7shfplf06adn8mr8q26'
},
rewrite: {
'^/api': ''
}
}
],
livereload: {
options: {
open: true,
base: [
'.tmp',
'<%= yeoman.app %>'
],
middleware: function(connect, options) {
if (!Array.isArray(options.base)) {
options.base = [options.base];
}
// Setup the proxy
var middlewares = [require('grunt-connect-proxy/lib/utils').proxyRequest];
// Serve static files.
options.base.forEach(function(base) {
middlewares.push(connect.static(base));
});
// Make directory browse-able.
var directory = options.directory || options.base[options.base.length - 1];
middlewares.push(connect.directory(directory));
return middlewares;
}
}
},
此处的堆栈溢出Grunt connect proxy rewrite not works in https是我的确切问题,但这并不能解决我的问题。其他相关帖子 http://www.ngroutes.com/questions/AUuACacna5vEqxqlK1fu/grunt-connect-proxy-proxy-created-but-i-get-a-404.html
这篇文章就是为什么主机包含在我的gruntfile.js的标题中,以及为什么services-test.app.com在我的错误中显示在除本地主机之外的所有内容。
最后我看到一些东西说这可能是一个CORS问题,虽然这可能是grunt-contrib-connect的重点,但不必在我的理解中改变服务器端。
感谢任何可以帮助我解决这个问题的人,抱歉这有点像我今天看了很多东西。
答案 0 :(得分:1)
因此grunt-connect-proxy存储库中存在一个错误。它已在此提交中修复:https://github.com/drewzboto/grunt-connect-proxy/commit/f798bbd31b76b039a392b8f1bca55b310a7ac5c9
更新到repo中的最新提交为我修复了问题。所以你可以这样做或等待新版本发布。
希望能为你修复它!
答案 1 :(得分:1)
我一直收到错误&#34;代理错误:ECONNRESET&#34;在我的控制台中。这个solution降级到grunt-connect-proxy版本0.1.10。关于设置代理,我按照fettblog.eu tutorial进行了操作。