我有一个跨多个子域(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")
不起作用 https://stackoverflow.com/questions/1653308/access-control-allow-origin-multiple-origin-domains
所以我想做下一步,在服务器端手动检查 Origin 标头,并允许Access-Control-Allow-Origin: *
这样就可以提出请求,但不幸的是,这种情况突然出现在 MDN 中 https://developer.mozilla.org/En/HTTP_access_control#Requests_with_credentials
重要提示:响应凭据请求时,服务器必须指定域,并且不能使用通配符。
有什么方法可以使我的请求跨多个域工作,并且仍然使用 CORS 发送凭据?
两个想法:
1)您是否还包含“Access-Control-Allow-Credentials:true”标头?这是传递 cookie 凭证所必需的(并且相应的 XHR 客户端必须设置 .withCredentials = true)
2)您是否尝试过链接中的建议,并且仅包含当前请求的来源。例如,如果请求带有标头“Origin:http://blog.example.com http://blog.example.com”,您将回复“Access-Control-Allow-Origin:http://blog.example.com http://blog.example.com“,而不是来源列表。这需要在服务器端实现上做更多的工作。
3)另一种想法是,您提到您有一个必须由各个域共享的单一登录表单。好吧,如果它是标准的 HTML 表单,您可以跨域进行常规表单发布。您不需要使用 CORS。只需将表单的“action”属性设置为您要发布到的网址即可。例如:
<form name="login" action="http://login.example.com/doLogin">
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)