Rud*_*koŭ 4 cors swagger swagger-ui swagger-editor openapi
我有以下 OpenAPI 定义:
swagger: "2.0"
info:
version: 1.0.0
title: Simple API
description: A simple API to learn how to write OpenAPI Specification
schemes:
- https
host: now.httpbin.org
paths:
/:
get:
summary: Get date in rfc2822 format
responses:
200:
schema:
type: object
items:
properties:
now:
type: object
rfc2822:
type: string
Run Code Online (Sandbox Code Playgroud)
我想rfc2822从响应中检索:
{"now": {"epoch": 1531932335.0632613, "slang_date": "today", "slang_time": "now", "iso8601": "2018-07-18T16:45:35.063261Z", "rfc2822": "Wed, 18 Jul 2018 16:45:35 GMT", "rfc3339": "2018-07-18T16:45:35.06Z"}, "urls": ["/", "/docs", "/when/:human-timestamp", "/parse/:machine-timestamp"]}
Run Code Online (Sandbox Code Playgroud)
但是当我从 Swagger Editor 发出请求时,我收到一个错误:
ERROR 服务器未找到或发生错误
我究竟做错了什么?
请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,不允许访问Origin ' http://localhost:8081 '。
这是一个CORS问题。https://now.httpbin.org的服务器不支持 CORS,因此浏览器不会让来自其他域的网页从 JavaScript 向 now.httpbin.org 发出请求。
您有几个选择:
问业主https://now.httpbin.org来支持CORS。
注意:服务器不得要求对预检OPTIONS请求进行身份验证。OPTIONS请求应返回 200 并带有正确的 CORS 标头。
如果您是所有者 - 考虑在同一服务器和端口 (now.httpbin.org:443) 上托管 Swagger UI 以完全避免 CORS。
在浏览器中禁用 CORS 限制。这会降低浏览器的安全性,因此只有在您了解风险时才这样做。
使用SwaggerHub而不是 Swagger Editor 来编辑和测试您的 API 定义。SwaggerHub 代理通过其服务器“试用”请求,因此不受 CORS 限制。(披露:我为制造 SwaggerHub 的公司工作。)
顺便说一下,您的响应定义无效。响应缺少 adescription并且schema是错误的(例如,有一个额外的items关键字)。它应该是:
responses:
200:
description: OK
schema:
type: object
properties:
now:
type: object
properties:
rfc2822:
type: string
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11526 次 |
| 最近记录: |