http - 使用凭据进行跨源资源共享

标签 http cors

我有一个跨多个子域(example.com、blog.example.com 和 app.example.com)的通用身份验证表单。登录表单必须将此数据提交给 example.com,无论它显示在哪里,所以我想到了使用 CORS,但是这个:

header("Access-Control-Allow-Origin: http://example.com http://blog.example.com http://app.example.com")

does not work

所以我想到做下一件事,在服务器端手动检查 Origin header ,并允许 Access-Control-Allow-Origin: * 以便可以发出请求,但不幸的是,这突然出现了in the MDN

Important note: when responding to a credentialed request, server must specify a domain, and cannot use wild carding.

有没有办法让我的请求跨多个域工作,并且仍然使用 CORS 发送凭据?

最佳答案

两个想法:

1) 您是否还包含“Access-Control-Allow-Credentials: true” header ?这是传递 cookie 凭据所必需的(并且相应的 XHR 客户端必须设置 .withCredentials = true)

2) 您是否尝试过链接中的建议并且只包含当前请求的来源。例如,如果请求带有 header “Origin: http://blog.example.com”,您将以“Access-Control-Allow-Origin: http://blog.example.com”作为响应,而不是来源列表。这需要在您的服务器端实现上做更多的工作。

3) 另一个想法是,您提到您有一个必须由多个域共享的登录表单。好吧,如果它是标准的 HTML 表单,您可以跨域进行常规表单发布。您不需要使用 CORS。只需将表单的“action”属性设置为您希望发布到的 url。例如:

<form name="login" action="http://login.example.com/doLogin">

关于http - 使用凭据进行跨源资源共享,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8074665/

相关文章:

c++ - 使用 libcurl 上传文件

apache - 为什么在我的 apache 服务器中 https 比 http 更快?

javascript - 从 api 检索 Post 请求响应并将其传递给另一个 post 请求以传递给 angular8 应用程序

nginx - 如何允许通过 CORS 访问 nginx 中的多个域

caching - 缓存的非 CORS 响应与新的 CORS 请求冲突

google-chrome - 在 Chrome 73 中阻止的 CORB 选项请求

php - 在 2 个 PHP 脚本之间将加密数据服务器传输到服务器

ruby-on-rails-4 - Rails 对 CORS 预检选项请求响应 404

amazon-web-services - 将 AJAX 制作为 AWS 上的 Elasticsearch 时出现 CORS 问题

http - 如何在 iOS 应用中完成 HTTP post