使用凭证进行跨源资源共享

Nem*_*emo 29 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")
Run Code Online (Sandbox Code Playgroud)

不起作用

所以我想做下一件事,并在服务器端手动检查Origin标头,并允许Access-Control-Allow-Origin: *可以进行请求,但不幸的是,这在MDN中出现了

重要说明:在响应凭证请求时,服务器必须指定域,并且不能使用通配符.

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

mon*_*sur 41

两个想法:

1)您是否还包括"Access-Control-Allow-Credentials:true"标题?这是传递cookie凭据所必需的(相应的XHR客户端必须设置.withCredentials = true)

2)您是否尝试过链接中的建议并仅包含当前请求的来源.例如,如果请求带有标题"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">
Run Code Online (Sandbox Code Playgroud)