博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
开启OpenStack Api跨域请求(CORS)功能
阅读量:5974 次
发布时间:2019-06-19

本文共 2447 字,大约阅读时间需要 8 分钟。

hot3.png

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

##反向代理 如果给api配置了反向代理,可以参考:

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

首先安装一个python模块

pip install wsgicors

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

[filter:cors]use = egg:wsgicors#middlewarepolicy = openopen_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#middlewarepolicy = openopen_origin = *open_headers = *open_methods = *open_maxage = 86400

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

[composite:openstack_compute_api_v2]use = call:nova.api.auth:pipeline_factorynoauth = cors compute_req_id faultwrap sizelimit noauth ratelimit osapi_compute_app_v2keystone = cors compute_req_id faultwrap sizelimit authtoken keystonecontext ratelimit osapi_compute_app_v2keystone_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_v21noauth = cors request_id faultwrap sizelimit noauth osapi_compute_app_v21keystone = cors request_id faultwrap sizelimit authtoken keystonecontext osapi_compute_app_v21[composite:openstack_compute_api_v3]use = call:nova.api.auth:pipeline_factory_v21noauth = cors request_id faultwrap sizelimit noauth_v3 osapi_compute_app_v3keystone = cors request_id faultwrap sizelimit authtoken keystonecontext osapi_compute_app_v3

最后重启nova-api

service nova-api restart

##参考

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

你可能感兴趣的文章
UDP可靠传输那些事(转)
查看>>
在CenOS7.5里安装Redis
查看>>
ionic+angularJS+cordova(FileTransfer)上传图片
查看>>
SNS的盈利模式分析
查看>>
矩阵快速幂模板
查看>>
利用express搭建一个restful api 服务器
查看>>
(转)调整.NET控件WebBrowser的默认浏览器内核版本
查看>>
HDU4116 Fruit Ninja (2011 Asia ChengDu Regional Contest)
查看>>
2017day2
查看>>
IPSec
查看>>
关于使用Java开发Mis系统
查看>>
CSS 溢出文本显示省略号的方法(兼容 IE、FF、Chrome)
查看>>
[原创]Android从xml加载到View对象过程解析
查看>>
并发问题的资源与待准备
查看>>
C++基础
查看>>
【12-26】go.js
查看>>
标准文件描述符与标准文件句柄
查看>>
049_Search Lookup (二)
查看>>
Js apply方法详解
查看>>
js jquery css 选择器总结
查看>>