我设计的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
)。
这能是真的吗? 是否有一个共同的解决方法吗?