我应该如何使用 Access-Control-Allow-Headers?
How should I be using Access-Control-Allow-Headers?
我正在 Django 中构建一个后端,它接受来自其他域的请求,所以我使用 django-cors-headers 来处理 CORS。不过,我遇到了一个外部域访问我的后端的障碍,因为他们的请求代码 a) 设置了 withCredentials 并且 b) 在请求中有一些额外的 headers。
这两个应该与他们能够命中我的后端无关,但我得到了 Access-Control-Allow-Credentials' header in the response is '' which must be 'true'
和 Request header field [field_name] is not allowed by Access-Control-Allow-Headers in preflight response.
的预期错误,其他一些 Whosebug 帖子将我指向 Access-Control-Allow-Credentials = 'true'
第一个,Access-Control-Allow-Headers = '*'
第二个,但我找不到太多关于最佳实践的信息。
我想弄清楚的是
- 设置这两个标志是否安全?请求中还包含其他 headers 通过令牌处理身份验证,所以我不确定这里是否存在很大的安全风险
- 我是否应该告诉我的用户我的后端不允许凭据和其他 headers(因为代码工作不需要它们)?
- Access-Control-Allow-Headers 的文档指定
‘The value “*” only counts as a special wildcard value for requests without credentials (requests without HTTP cookies or HTTP authentication information). In requests with credentials, it is treated as the literal header name “*” without special semantics. Note that the Authorization header can’t be wildcarded and always needs to be listed explicitly.’
我认为我实际上无法同时设置 Access-Control-Allow-Credentials = true
和 Access-Control-Allow-Headers = '*'
吗?
- 请参阅我对您的第 3 点的回复。
- 是的。您的服务器,您的规则。
- 同时设置
Access-Control-Allow-Credentials: true
和 Access-Control-Allow-Headers: *
毫无用处:
- 出于安全原因,browsers that support the wildcard in
Access-Control-Allow-Headers
treat the *
value literally in the case of credentialed requests。
- 不支持
Access-Control-Allow-Headers
通配符的浏览器总是按字面意思处理 *
值。
我正在 Django 中构建一个后端,它接受来自其他域的请求,所以我使用 django-cors-headers 来处理 CORS。不过,我遇到了一个外部域访问我的后端的障碍,因为他们的请求代码 a) 设置了 withCredentials 并且 b) 在请求中有一些额外的 headers。
这两个应该与他们能够命中我的后端无关,但我得到了 Access-Control-Allow-Credentials' header in the response is '' which must be 'true'
和 Request header field [field_name] is not allowed by Access-Control-Allow-Headers in preflight response.
的预期错误,其他一些 Whosebug 帖子将我指向 Access-Control-Allow-Credentials = 'true'
第一个,Access-Control-Allow-Headers = '*'
第二个,但我找不到太多关于最佳实践的信息。
我想弄清楚的是
- 设置这两个标志是否安全?请求中还包含其他 headers 通过令牌处理身份验证,所以我不确定这里是否存在很大的安全风险
- 我是否应该告诉我的用户我的后端不允许凭据和其他 headers(因为代码工作不需要它们)?
- Access-Control-Allow-Headers 的文档指定
‘The value “*” only counts as a special wildcard value for requests without credentials (requests without HTTP cookies or HTTP authentication information). In requests with credentials, it is treated as the literal header name “*” without special semantics. Note that the Authorization header can’t be wildcarded and always needs to be listed explicitly.’
我认为我实际上无法同时设置Access-Control-Allow-Credentials = true
和Access-Control-Allow-Headers = '*'
吗?
- 请参阅我对您的第 3 点的回复。
- 是的。您的服务器,您的规则。
- 同时设置
Access-Control-Allow-Credentials: true
和Access-Control-Allow-Headers: *
毫无用处:
- 出于安全原因,browsers that support the wildcard in
Access-Control-Allow-Headers
treat the*
value literally in the case of credentialed requests。 - 不支持
Access-Control-Allow-Headers
通配符的浏览器总是按字面意思处理*
值。