Javascript 有什么方法可以避免XHR在跨域请求时不使用动态子域发送cookie?

Javascript 有什么方法可以避免XHR在跨域请求时不使用动态子域发送cookie?,javascript,ajax,cookies,cross-domain,same-origin-policy,Javascript,Ajax,Cookies,Cross Domain,Same Origin Policy,我正在使用一个登录系统,我想这样工作: 未登录时尝试发布弹出一个警报,提示u/p字段->提交u/p ajax点击登录路径->成功登录设置“登录”cookie->现在再次尝试发布成功。无需重新加载页面 我似乎遇到了所有这些CORS/跨域访问控制的障碍,因为我使用的是动态子域和XHR请求 您可能在anywhere.mysite.com,必须通过ajax跨域访问user.mysite.com/login登录 为了允许登录设置cookie,您必须指定源代码no'*'通配符,设置“Access Contr

我正在使用一个登录系统,我想这样工作:

未登录时尝试发布弹出一个警报,提示u/p字段->提交u/p ajax点击登录路径->成功登录设置“登录”cookie->现在再次尝试发布成功。无需重新加载页面

我似乎遇到了所有这些CORS/跨域访问控制的障碍,因为我使用的是动态子域和XHR请求

您可能在anywhere.mysite.com,必须通过ajax跨域访问user.mysite.com/login登录

为了允许登录设置cookie,您必须指定源代码no'*'通配符,设置“Access Control Allow Credentials=true”标题,并使用“xhrFields:{'withCredentials':true}”参数提交ajax。我可以让它工作

我的问题是动态域。不可能在接受的源列表中设置所有可能的子域。是否有任何可能的方法让它接受.mysite.com作为源,以便所有子域都通过.mysite.com

列出设置document.domain=company.com的可能性;在iframe中实现这种功能,但我不确定在上面的登录流中我将在何处插入iframe,或者它将如何工作


有什么想法吗?

您是在编写应用程序还是只是在处理登录路径的前端发布?我正在编写。对于herokuI上的flask,我不太熟悉这些,这就是为什么我不把它作为一个完整的答案,但是如果请求来自已批准域的白名单,是否可以从应用程序中手动设置Access Control Allow Origin标头?因此,您可以从当前子域中发布,服务器端代码将检查源代码,如果它与已批准的源代码列表中的某个内容匹配,而不是尝试在前端执行此操作,它将以该子域进行响应。您是在编写应用程序还是只是在处理登录路径的前端发布?我正在编写。对于herokuI上的flask,我不太熟悉这些,这就是为什么我不把它作为一个完整的答案,但是如果请求来自已批准域的白名单,是否可以从应用程序中手动设置Access Control Allow Origin标头?因此,与其在前端尝试这样做,不如从当前子域发布,服务器端代码将检查源代码,如果它与已批准源列表中的某个内容匹配,它将使用该子域进行响应。