在 Apache Flume 上启用跨源资源共享
Enabling cross-origin resource sharing on Apache Flume
我正在开发一个基本上通过端口 8080 连接到 Flume 服务器的网页。每次客户端发送新请求时,它都会抛出 403 Forbidden 错误,因为 HTTP 源不知道如何处理 OPTIONS 请求。
Apache Flume 的文档中没有具体提及如何启用 CORS。
原来我不得不修改Flume的源代码。
在文件HTTPSource(私有classFlumeHTTPServlet)中,添加如下方法:
@Override
public void doOptions(HttpServletRequest request, HttpServletResponse response)
throws IOException
{
response.addHeader("Access-Control-Allow-Origin", "*");
}
我在 flume 前面使用 nginx 代理来设置 CORS headers 而不是 flume.
这是我的代理定义:
server {
#proxy server for flume
listen 15140; ## listen for ipv4; this line is default and implied
location / {
if ($request_method = 'OPTIONS') {
add_header Access-Control-Allow-Origin $http_origin always;
add_header Access-Control-Allow-Credentials true always;
add_header Access-Control-Allow-Methods 'GET,POST,PUT,DELETE,OPTIONS' always;
add_header Access-Control-Allow-Headers 'Authorization,X-Requested-With,Content-Type,Origin,Accept,token' always;
add_header Access-Control-Max-Age 3600;
add_header Content-Length 0;
return 200;
}
add_header Access-Control-Allow-Origin $http_origin always;
add_header Access-Control-Allow-Credentials true always;
add_header Access-Control-Allow-Methods 'GET,POST,PUT,DELETE,OPTIONS' always;
add_header Access-Control-Allow-Headers 'Authorization,X-Requested-With,Content-Type,Origin,Accept,token' always;
proxy_pass http://localhost:5140/;
}
希望这对您有所帮助
我正在开发一个基本上通过端口 8080 连接到 Flume 服务器的网页。每次客户端发送新请求时,它都会抛出 403 Forbidden 错误,因为 HTTP 源不知道如何处理 OPTIONS 请求。
Apache Flume 的文档中没有具体提及如何启用 CORS。
原来我不得不修改Flume的源代码。
在文件HTTPSource(私有classFlumeHTTPServlet)中,添加如下方法:
@Override
public void doOptions(HttpServletRequest request, HttpServletResponse response)
throws IOException
{
response.addHeader("Access-Control-Allow-Origin", "*");
}
我在 flume 前面使用 nginx 代理来设置 CORS headers 而不是 flume.
这是我的代理定义:
server {
#proxy server for flume
listen 15140; ## listen for ipv4; this line is default and implied
location / {
if ($request_method = 'OPTIONS') {
add_header Access-Control-Allow-Origin $http_origin always;
add_header Access-Control-Allow-Credentials true always;
add_header Access-Control-Allow-Methods 'GET,POST,PUT,DELETE,OPTIONS' always;
add_header Access-Control-Allow-Headers 'Authorization,X-Requested-With,Content-Type,Origin,Accept,token' always;
add_header Access-Control-Max-Age 3600;
add_header Content-Length 0;
return 200;
}
add_header Access-Control-Allow-Origin $http_origin always;
add_header Access-Control-Allow-Credentials true always;
add_header Access-Control-Allow-Methods 'GET,POST,PUT,DELETE,OPTIONS' always;
add_header Access-Control-Allow-Headers 'Authorization,X-Requested-With,Content-Type,Origin,Accept,token' always;
proxy_pass http://localhost:5140/;
}
希望这对您有所帮助