Safari 是不是正确处理临时重定向 (307) 到不同的域?
Posted
技术标签:
【中文标题】Safari 是不是正确处理临时重定向 (307) 到不同的域?【英文标题】:Does safari handle temporary redirects (307) to a different domain correctly?Safari 是否正确处理临时重定向 (307) 到不同的域? 【发布时间】:2020-05-30 07:30:06 【问题描述】:当我重定向到不同的域时,Safari 不提供发布表单数据。
根据 临时重定向 307 上的https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/307,浏览器不应更改发布请求。
Chrome , firefox 保留帖子数据,无论给定域如何。所以他们按照上面的链接正确行事。
但是https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html 状态
用户代理不能自动重定向请求,除非它 可以被用户确认
所以我什至不确定哪些浏览器在这里正确处理临时重定向。
无论如何,我可以让 Safari 在 307 重定向上不丢失其发布数据吗?
【问题讨论】:
我认为更重要的是这里使用的 HTTP 服务器 :) 有时这个技巧是在服务器端完成的......所以 nginx 或 Apache......? 【参考方案1】:这很可能是 CORS 问题,307 点所在的服务器是否启用了跨域资源共享?例如Access-Control-Allow-Origin: *
在响应头中。
如果没有,请尝试在该服务器上启用 CORS 并进行测试。
如果这不起作用,那么也许看看你是如何发出初始 POST 请求的,你是在使用 xhr (XMLHttpRequest) 还是其他东西?如果您使用的是 xhr,请尝试通过 Fetch API 进行 POST 以查看是否有效。
有一个webkit bug 被标记为已修复,但它与您所遇到的非常相似。可能您仍然遇到同样的问题。
【讨论】:
我认为这不是 CORS 问题,因为表单不是由 javascript 发送的。这只是一个表格帖子。但可以肯定的是,我也尝试将 Access-Control-Allow-Origin: * 放在接收服务器上,但没有任何区别。现在我认为 safari 将重定向 307 作为 302 处理。正确处理 307 取决于浏览器的实现者以上是关于Safari 是不是正确处理临时重定向 (307) 到不同的域?的主要内容,如果未能解决你的问题,请参考以下文章