开启OpenStack Api跨域请求(CORS)功能

如果你打算在js中使用openstack接口(如jstack),就会碰到js的跨域请求问题,解决方法是要在openstack api的response中加上Access-Control-Allow-Origin: *这样的头信息。

##反向代理 如果给api配置了反向代理,可以参考:http://enable-cors.org/server.html

##配置wsgi 几乎所有的openstack api都使用了wsgi服务,我们可以在wsgi这层设置CORS信息。

首先安装一个python模块

pip install wsgicors

###让Keystone支持CORS 编辑/etc/keystone/keystone-paste.ini,新增如下内容:

[filter:cors]
use = egg:wsgicors#middleware
policy = open
open_origin = *
open_headers = *
open_methods = *
open_maxage = 86400

然后,在每个pipeline的开头加上cors,例如:

[pipeline:public_api]
pipeline = cors stats_monitoring sizelimit url_normalize build_auth_context token_auth admin_token_auth xml_body_v2 json_body ec2_extension user_crud_extension public_service

[pipeline:admin_api]
pipeline = cors sizelimit url_normalize build_auth_context token_auth admin_token_auth xml_body_v2 json_body ec2_extension s3_extension crud_extension admin_service

[pipeline:api_v3]
pipeline = cors stats_reporting sizelimit url_normalize build_auth_context token_auth admin_token_auth xml_body_v3 json_body ec2_extension_v3 s3_extension simple_cert_extension revoke_extension service_v3

[pipeline:public_version_api]
pipeline = cors sizelimit url_normalize xml_body public_version_service

[pipeline:admin_version_api]
pipeline = cors sizelimit url_normalize xml_body admin_version_service

最后重启服务

service keystone restart

###让nova-api支持CORS 编辑/etc/nova/api-paste.ini,新增如下内容:

[filter:cors]
use = egg:wsgicors#middleware
policy = open
open_origin = *
open_headers = *
open_methods = *
open_maxage = 86400

然后,在每个pipeline的开头加上cors,例如:

[composite:openstack_compute_api_v2]
use = call:nova.api.auth:pipeline_factory
noauth = cors compute_req_id faultwrap sizelimit noauth ratelimit osapi_compute_app_v2
keystone = cors compute_req_id faultwrap sizelimit authtoken keystonecontext ratelimit osapi_compute_app_v2
keystone_nolimit = cors compute_req_id faultwrap sizelimit authtoken keystonecontext osapi_compute_app_v2

[composite:openstack_compute_api_v21]
use = call:nova.api.auth:pipeline_factory_v21
noauth = cors request_id faultwrap sizelimit noauth osapi_compute_app_v21
keystone = cors request_id faultwrap sizelimit authtoken keystonecontext osapi_compute_app_v21

[composite:openstack_compute_api_v3]
use = call:nova.api.auth:pipeline_factory_v21
noauth = cors request_id faultwrap sizelimit noauth_v3 osapi_compute_app_v3
keystone = cors request_id faultwrap sizelimit authtoken keystonecontext osapi_compute_app_v3

最后重启nova-api

service nova-api restart

##参考 Enabling CORS in OpenStack APIs

转载于:https://my.oschina.net/fmnisme/blog/597087

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值