1

我有以下问题。当通过 API 网关运行我的 openWhisk 函数时,一切都很好。也将其称为跨域请求效果很好。

但我需要用凭据调用它,似乎没有选择这样做。

我尝试了什么:

  1. 仅启用 API CORS 设置,函数本身没有任何标头
  2. 在 API 中启用 cors 并且在函数中也有 CORS 标头 -> 函数中的相关标头(访问源)被覆盖!
  3. 在 API 中禁用 CORS 并在函数中包含 CORS 标头 -> 函数的相关标头(访问源)被删除

这是通常应该工作的代码:

return {
        headers: {
            'Access-Control-Allow-Headers': '*',
            'Access-Control-Allow-Origin': domain,
            'Access-Control-Allow-Credentials': 'true',
            'Content-Type': 'text/xml'
        },
        body: xml
    }

如果有人有想法会很棒,因为支持人员已经好几天没有回答我的问题了。

谢谢,最好的,安德烈

4

1 回答 1

0

使用您的样本:

> cat t.js 
function main() {
return {
        headers: {
            'Access-Control-Allow-Headers': '*',
            'Access-Control-Allow-Origin': 'domain',
            'Access-Control-Allow-Credentials': 'true',
            'Content-Type': 'text/xml'
        },
        body: "<hi></hi>"
    }
}

针对 Bluemix:

> wsk action update t t.js -a web-custom-options true --web true
ok: updated action t

卷曲网页动作

> curl -v https://openwhisk.ng.bluemix.net/api/v1/web/myspace/default/t.http
< HTTP/1.1 200 OK
< X-Backside-Transport: OK OK
< Connection: Keep-Alive
< Transfer-Encoding: chunked
< Server: nginx/1.11.13
< Date: Tue, 18 Jul 2017 14:00:40 GMT
< Content-Type: text/xml
< Access-Control-Allow-Headers: *
< Access-Control-Allow-Origin: domain
< Access-Control-Allow-Credentials: true
<hi></hi>

没有注释:

> wsk action update t t.js -a web-custom-options false --web true

重复 curl 将显示这些标题:

< Access-Control-Allow-Origin: *,domain
< Access-Control-Allow-Methods: OPTIONS, GET, DELETE, POST, PUT, HEAD, PATCH
< Access-Control-Allow-Headers: Authorization, Content-Type,*
< Access-Control-Allow-Credentials: true
于 2017-07-18T14:03:21.693 回答