【发布时间】:2021-10-03 13:10:49
【问题描述】:
我有一个 PUT 请求无法通过 OPENAPI 3.0 我遇到了 CORS 问题,但是有趣的是,如果我接受 SwaggerUI 构建的 CURL 请求并将其放入任何 CLI 中,它就可以完美运行。只有通过 SwaggerUI PUT 不起作用。 POST 和 GET 没问题。
获取失败。
可能的原因:
CORS
网络故障
对于 CORS 请求,URL 方案必须是“http”或“https”。
如果我得到我的 JSON 文件定义,它的内容如下。我可以看到 PUT 不在“Access-Control-Allow-Methods”中,但我不知道如何添加它。
$ curl -I "http://192.168.2.120:8087/medic/ic-swagger.json"
HTTP/1.1 200 正常
服务器:nginx
日期:格林威治标准时间 2021 年 7 月 27 日星期二 14:55:25
内容类型:application/json
内容长度:25275
最后修改时间:格林威治标准时间 2021 年 7 月 27 日星期二 14:54:22
连接:保持活动
ETag:“61001e1e-62bb”
到期:格林威治标准时间 2021 年 7 月 27 日星期二 14:55:24
缓存控制:无缓存
访问控制允许来源:*
访问控制允许方法:GET、POST、OPTIONS
Access-Control-Allow-Headers:DNT、X-CustomHeader、Keep-Alive、User-Agent、X-Requested-With、If-
修改自、缓存控制、内容类型
接受范围:字节
下面的简单 PUT 请求
/user/login:
put:
tags: [GETTING STARTED]
summary: Log a user in.
description: Log a user in and get an Id.
requestBody:
required: true
content:
text/plain:
schema:
$ref: '#/components/schemas/loginBody'
responses:
'200':
description: Successful user login. RESULT will hold the new Id
content:
application/json:
schema:
$ref: '#/components/schemas/Login_response_1'
通过 POSTMAN 没问题,在标题中你发现:
Access-Control-Allow-Methods: POST, GET, PUT, UPDATE, OPTIONS, HEAD
Access-Control-Allow-Origin: *
任何帮助都将不胜感激。
【问题讨论】:
-
1) 浏览器开发工具的“控制台”选项卡中的完整错误消息是什么? 2) 无关评论:
requestBody中的内容类型应该是application/json而不是text/plain。
标签: cors swagger-ui openapi