DataService 启用了 CORS,但我仍然看到 401 未授权错误(选项)
DataService is CORS enabled, but still i see 401 unauthorized error (OPTIONS)
从原始问题改写
我有一个调用我的 OData 数据服务的 GET 请求。
现在,当发出请求时,我在网络调试器中看到以下错误:
HTTP OPTIONS 401 Unauthorized text/html
确实,我确实看到 Access-Control headers 都如预期的那样:
Access-Control-Allow-Headers: content-type, accept
Access-Control-Allow-Methods: POST, GET, OPTIONS
Access-Control-Allow-Origin: http://mydomain:port
现在尽管看起来一切正确,但我仍然看到上述错误(pre-flight OPTIONS 请求期间出现 401 未经授权的错误)。
我做错了什么?
401 未授权错误与 CORS 完全没有(直接)关系。
浏览器正在发出 OPTIONS 请求,服务器表示不允许(完全不允许;不仅仅是来自 JavaScript)。
CORS headers 也在响应中发送这一事实无关紧要:CORS 的要求是预检响应为 200 OK。
可能发生的情况是您有一个需要身份验证的 API。也许是用户名和密码。也许是一块饼干。也许是别的什么。是你的API,你应该知道。
浏览器不会在预检请求中发送这些凭据。
您需要配置服务器,以便 OPTIONS 请求不需要凭据。
从原始问题改写
我有一个调用我的 OData 数据服务的 GET 请求。
现在,当发出请求时,我在网络调试器中看到以下错误:
HTTP OPTIONS 401 Unauthorized text/html
确实,我确实看到 Access-Control headers 都如预期的那样:
Access-Control-Allow-Headers: content-type, accept
Access-Control-Allow-Methods: POST, GET, OPTIONS
Access-Control-Allow-Origin: http://mydomain:port
现在尽管看起来一切正确,但我仍然看到上述错误(pre-flight OPTIONS 请求期间出现 401 未经授权的错误)。
我做错了什么?
401 未授权错误与 CORS 完全没有(直接)关系。
浏览器正在发出 OPTIONS 请求,服务器表示不允许(完全不允许;不仅仅是来自 JavaScript)。
CORS headers 也在响应中发送这一事实无关紧要:CORS 的要求是预检响应为 200 OK。
可能发生的情况是您有一个需要身份验证的 API。也许是用户名和密码。也许是一块饼干。也许是别的什么。是你的API,你应该知道。
浏览器不会在预检请求中发送这些凭据。
您需要配置服务器,以便 OPTIONS 请求不需要凭据。