我正在尝试对所有域启用CORS的测试(在使用例正常工作后将被限制)。
据我所知,我应该将--cors-allowed-origins=["http://*"]
添加到我的kube-apiserver.manifest
但是,当我尝试这样做时:
spec:
containers:
- command:
- /bin/sh
- -c
- /usr/local/bin/kube-apiserver --address=127.0.0.1 --admission-control=Initializers,NamespaceLifecycle,LimitRanger,ServiceAccount,PersistentVolumeLabel,DefaultStorageClass,DefaultTolerationSeconds,NodeRestriction,Priority,ResourceQuota
--allow-privileged=true --anonymous-auth=false --apiserver-count=1 --authorization-mode=AlwaysAllow
--basic-auth-file=/srv/kubernetes/basic_auth.csv --client-ca-file=/srv/kubernetes/ca.crt
--cloud-provider=aws --etcd-servers-overrides=/events#http://127.0.0.1:4002
--etcd-servers=http://127.0.0.1:4001 --insecure-port=8080 --kubelet-preferred-address-types=InternalIP,Hostname,ExternalIP
--proxy-client-cert-file=/srv/kubernetes/apiserver-aggregator.cert --proxy-client-key-file=/srv/kubernetes/apiserver-aggregator.key
--requestheader-allowed-names=aggregator --requestheader-client-ca-file=/srv/kubernetes/apiserver-aggregator-ca.cert
--requestheader-extra-headers-prefix=X-Remote-Extra- --requestheader-group-headers=X-Remote-Group
--requestheader-username-headers=X-Remote-User --secure-port=443 --service-cluster-ip-range=100.64.0.0/13
--storage-backend=etcd2 --tls-cert-file=/srv/kubernetes/server.cert --tls-private-key-file=/srv/kubernetes/server.key
--token-auth-file=/srv/kubernetes/known_tokens.csv --v=2 2>&1 | /bin/tee -a
--cors-allowed-origins=["https://*"]
尝试使用kubectl get pod时出现以下错误:
The connection to the server 127.0.0.1 was refused - did you specify the right host or port?
该设置我到底在做什么错?如何将CORS域添加到Kubernetes?
编辑:我现在正在尝试:
- kube-apiserver
--cors-allowed-origins=["https://*"]
我的Pod不再崩溃,但是我的应用程序中仍然存在CORS问题。
我遇到这样的错误:
[Error] Origin http://localhost:8080 is not allowed by Access-Control-Allow-Origin.
[Error] XMLHttpRequest cannot load https://example.com/auth/realms/name/protocol/openid-connect/token due to access control checks.
[Error] Failed to load resource: Origin http://localhost:8080 is not allowed by Access-Control-Allow-Origin. (token, line 0)
[Error] Preflight response is not successful
[Error] XMLHttpRequest cannot load https://example.com/api/v1/users/me/profile? due to access control checks.
答案 0 :(得分:0)
好像您正在尝试使用http协议访问api服务器,请尝试:
--cors-allowed-origins=["http://*"]
答案 1 :(得分:0)
根据文档:
-cors-allowed-origins:CORS允许的来源列表,以逗号分隔。允许的来源可以是支持子域匹配的正则表达式。如果此列表为空,则不会启用CORS。
我已经针对API测试了此设置(以及http // *),并且可以正常工作:
--cors-allowed-origins=example.com,example2.com
Access-Control-Allow-Credentials: true
Access-Control-Allow-Headers: Content-Type, Content-Length, Accept-Encoding, X-CSRF-Token, Authorization, X-Requested-With, If-Modified-Since
Access-Control-Allow-Methods: POST, GET, OPTIONS, PUT, DELETE, PATCH
Access-Control-Allow-Origin: http://example.com
这些错误看起来像是服务器端应用程序上的设置问题。
Access-Control-Allow-Origin:指定进行跨域请求的授权域(您应该包括REST客户端的域,或者如果要使资源对所有人开放,则应包括“ *”)-后者不是如果在CORS请求期间允许使用凭据,则为一个选项)
希望获得帮助。