【发布时间】:2013-06-17 10:01:35
【问题描述】:
是否真的不可能在子域上使用 history.pushState,即使使用 CORS? (我试图将 NGINX 配置为那样做,似乎没有用)。 CORS 不应该告诉浏览器可以将 pushState 更改为子域,因为启用了跨域资源共享(这就是它背后的全部想法)? 有人尝试过/成功了吗?
如果不是这样,那真是太可惜了,因为我相当依赖于为这个问题找到解决方案,以避免在子域之间重新加载。有什么事吗?
【问题讨论】:
-
既然
history.pushState不触发一个HTTP请求,你认为它怎么知道外部服务器是否允许CORS? -
@Bergi 那么还有其他方法可以让它知道吗?或者它是如此固定以至于你什么都做不了?我不明白为什么他们发明了像 CORS 这样的东西,如果遵循同源策略的函数没有使用它......
-
好吧,CORS 是针对requests 的解决方案,而不是针对与 SOP 相关的所有内容。我认为不可能在地址栏中更改域,但我也没有真正看到这样做的理由。您的具体用例是什么?
-
@AleksandrBlekh 您可以尝试
document.domain,但实际上如果您不想要重定向,那么您不应该进行重定向。相反,proxy 该目录以便在两个 url 下提供服务,并使用 canonical link. -
@AleksandrBlekh 不,响应重定向的服务器位于原始域下。只需尝试使重写器成为代理!您可能想ask a new question,发布您的配置文件(Apache 的,如果您认为相关,可能还有 dns)。
标签: javascript cross-domain cors same-origin-policy pushstate