【发布时间】:2018-10-05 00:46:08
【问题描述】:
无法加载 http://example.com/signup.ashx:从“http://example.com/signup.ashx”重定向到“http://0.0.0.0:8000/?result=success”已被 CORS 策略阻止:请求的资源上不存在“Access-Control-Allow-Origin”标头。 Origin 'http://0.0.0.0:8000' 因此不允许访问。
如何让jqueryajax在表单提交成功后不跟随重定向?
基本上我的ajax 调用是成功的,但是由于CORS 错误ajax.fail() 被调用而不是ajax.done()。
似乎ajax 遵循重定向transparently 并且有一些考虑添加允许覆盖此行为的方法...
我的代码真的很简单:
form.on("submit", function(e) {
e.preventDefault();
$.ajax({
type: "POST",
url: url,
data: data
}).done(function(data) {
// do something on success
}).fail(function(data) {
// do something on failure
});
});
如果一个人可以同时访问backend 和frontend,这是一项微不足道的任务,但如果必须处理远程 API,这将是一项相当大的挑战。
我确实想知道,为什么在 21 世纪 的 2nd 十年(那个时候,其他服务器和我们自己的服务器一样重要)JQuery 仍然有这个问题吗?
【问题讨论】:
-
cors 是一个中间件,所以它会在成功之前失败。发生了什么
-
你能详细说明一下吗?
-
如果您没有跨域访问,则在您的标头上,将不会调用来自服务器的 post 方法。它会到达那里并返回失败。你需要修复 cors
-
@VictorOliveira 这就是我在问题中所说的 - CORS 错误。我无法控制第三方服务器,因此无法控制 CORS。
-
如果他们具有跨域访问权限,您只需在请求的标头中进行设置。如果他们不接受跨域访问,那么你就无能为力了。
标签: javascript jquery ajax cors