共計 2582 個字符,預計需要花費 7 分鐘才能閱讀完成。
今天就跟大家聊聊有關如何開啟 OpenStack Api 跨域請求 CORS 功能,可能很多人都不太了解,為了讓大家更加了解,丸趣 TV 小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。
如果你打算在 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
看完上述內容,你們對如何開啟 OpenStack Api 跨域請求 CORS 功能有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注丸趣 TV 行業資訊頻道,感謝大家的支持。