我的应用(http://localhost:8099
)正在向https://api.parse.com/
做一些CORS请求,我想将其代理到我的本地API http://localhost:8077
进行测试。这可以用grunt-connect-proxy
来实现吗?
这是我的grunt-connect-proxy配置不能像我期望的那样工作。
connect: {
dev: {
options: {
port: 8099,
hostname: 'localhost',
base: 'build/',
livereload: false,
keepalive: true,
middleware: function (connect, options) {
var proxy = require('grunt-connect-proxy/lib/utils').proxyRequest;
return [
// Include the proxy first
proxy,
// Serve static files.
connect.static('build/')
];
}
}
},
proxies: [
{
context: ['api/'], //same domain api requests, proxy works fine!
host: 'localhost',
port: 8077
},
{
context: ['api.parse.com/'], //cors, proxy is not working
host: 'localhost',
port: 8077,
changeOrigin: true
}]
}
→ grunt serve
Proxy created for: api/ to localhost:8077
Proxy created for: api.parse.com/ to localhost:8077
因此,基本上代理服务适用于api/
个请求(相同的域),但对于api.parse.com/
的cors请求则完全被忽略。想法?
答案 0 :(得分:1)
当您向api.parse.com
发出请求时,浏览器将连接到实际的parse.com服务器。 grunt-connect-proxy仅在向应用程序服务器发出请求时进入图片,在您的情况下为localhost:8099。
其他所有localhost:8099是您的应用程序的远程/跨域(甚至localhost:8077),您可以使用grunt-connect-proxy连接到服务器端的这些服务器,而在客户端,您仍然可以请求到您自己的服务器。
使用上下文配置代理时要连接的服务器。
proxies: [
{
context: ['api/'],
host: 'localhost',
port: 8077
},
{
context: ['parse/'],
host: 'api.parse.com'
}]
所以,考虑上面的配置
localhost:8099/api
- >将得到localhost:8077
和
localhost:8099/parse
- >将转到api.parse.com