我正在设计一个API,允许用户进行身份验证(使用令牌)并在同一域中包含重定向。现在,对于返回303的端点的未经身份验证的请求,
GET /documents/123 --> 303 redirect to `/documents/abc`
GET /documents/abc --> 200
一切顺利。
让我们对Authorization发送标头的同一端点进行经过身份验证的请求。这使得请求成为预先请求,并且浏览器执行预检OPTIONS请求,即
OPTIONS /documents/123 --> 204 (everything okay, please proceed)
GET /documents/123 --> 303 redirect to `/documents/abc`
此时,浏览器产生的不是GET实际资源/documents/abc
XMLHttpRequest cannot load http://localhost:8000/people/username/nschloe.
The request was redirected to 'http://localhost:8000/people/YDHa-B2FhMie',
which is disallowed for cross-origin requests that require preflight.
此行为符合标准:
7.1.5带预检的跨源请求
如果响应的HTTP状态代码不在2xx范围内
应用网络错误步骤。
这似乎意味着即使重定向位于同一个域(),也无法对经过身份验证的资源进行重定向localhost。
这真的可以吗?有一个共同的解决方法吗?
慕尼黑8549860
温温酱