我创建了一个单页Web应用程序,它利用了elasticsearch并要求用户启用了CORS,我想知道如何使Web应用程序不要求用户启用了CORS。
答案 0 :(得分:0)
每个当前浏览器强制进行CORS验证,并且不能在单个网站的级别上禁用它们。
您需要添加require(dplyr)
data1 <- as.tbl(iris)
data2 <- iris %>% filter(!(Sepal.Width >= 2 * Petal.Length))
write.table(data2, file='newData.txt',row.names=FALSE)
data3 <- read.table('newData.txt',header=TRUE, sep=' ')
identical(data2,data3)
data3 %>% summarize(nobs=n(), speciesversicolor=n_distinct(Species))
标题,通知您的浏览器可以建立安全连接。
<强> 1。如果您直接与ElasticSearch建立联系:
您需要修改Access-Control-*
文件。将以下密钥添加到配置文件中并重新启动服务器:
elasticsearch.yml
这些密钥可以向客户端发送正确的标头,并允许浏览器建立连接。如果您在localhost之外运行服务器,请记住将http.cors.enabled: true
http.cors.allow-origin: /https?:\/\/localhost(:[0-9]+)?/
正则表达式更改为对您的域有效。
您可以在ElasticSearch documentation
中找到更多详细信息和其他设置<强> 2。如果您使用反向代理(例如Nginx)
您还可以在反向代理级别添加所需的标头。与以前的方法不同,在这种情况下,您需要自己设置所有必需的标头以实现连接。
用作反向代理的Nginx服务器的基本配置:
http.cors.allow-origin
如果您需要(例如用于开发目的)在浏览器上禁用CORS验证,您也可以执行此操作。但是,在您这样做之前,请注意所有风险。
您需要使用以下参数运行Google Chrome:server {
listen 80;
server_name elasticsearch.example.com;
location / {
proxy_pass http://127.0.0.1:9200;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_hide_header 'Access-Control-Allow-Origin';
proxy_add_header 'Access-Control-Allow-Origin' 'http://example.com';
proxy_add_header 'Access-Control-Allow-Methods' 'OPTIONS, HEAD, GET, POST, PUT, DELETE';
proxy_add_header 'Access-Control-Allow-Headers' 'X-Requested-With, Content-Type, Content-Length';
if ($request_method = 'OPTIONS') {
return 200;
}
}
}
。
--disable-web-security --user-data-dir
$ [Chrome executable path] --disable-web-security --user-data-dir
启用Safari开发人员菜单
转到 Safari - &gt; 偏好设置 - &gt; 高级并在菜单栏中选择显示开发人员菜单
在菜单栏中打开“开发人员”菜单
选择禁用跨源限制