在POST FETCH调用后,我试图重定向到另一个URL。
fetch("/", { method: "POST", redirect: "follow" })
.then((res) => {
console.log(res);
})
.catch(function (err) {
console.info(err + " url: ");
});
后端是一个Express端点,具有如下简单的重定向,
var cors = require('cors');
app.use(cors());
app.post("/", (req, res) => {
res.redirect("https://google.com");
});
我想在fetch调用解析promise后更改window.location
,但调用失败,
CORS策略已阻止从源“http://localhost:3000”访问“https://google.com/”(从“http://localhost:3000/'重定向)的获取:请求的资源上不存在“Access-Control-Allow-Origin”标头。如果不透明响应满足您的需要,请将请求的模式设置为“no-cors”以在禁用CORS的情况下获取资源。
我知道这个错误是因为我访问google.com启用了CORS的www.example.com,不允许我获取数据,但我只是想能够重定向到该URL。是否有其他方法可以做到这一点?
2条答案
按热度按时间7rtdyuoh1#
AJAX 调用永远不会改变浏览器显示的网页。它们会向您的Javascript返回一个结果。如果服务器返回一个302,而您没有要求
fetch()
跟随重定向,那么您将得到302响应,您可以直接从该响应中读取位置标头。如果您确实要求fetch()
跟随重定向(并且安全性允许),然后它会跟随重定向并将新页面的内容返回到您的Javascript。无论哪种方式,响应都会到达您的Javascript,并且不会更改浏览器中显示的内容。如果您希望 AJAX 调用更改浏览器中显示的网页,则必须在JavaScript中将
window.location
设置为一个新的URL,该URL将从Ajax调用接收302重定向响应。yyhrrdl82#
你应该从客户端重定向,而不是从服务器端!
服务器端代码
客户端代码