【发布时间】:2018-08-22 17:35:43
【问题描述】:
我有一个跟踪系统,它使用 JavaScript 将 Ajax 调用发送到远程服务器。预计不会从服务器返回值。
这是 Ajax 调用:
window.onbeforeunload = function () {
$.ajax({
url: "https://remoteURL.com/r/",
type: "get",
async: false,
xhrFields: {
withCredentials: true
},
data: {
tagid: "123"
}
}).done(function () {
console.log("sent");
});
};
谷歌浏览器显示请求发送成功:
问题是我没有得到sent控制台日志,但是这个错误:
Failed to load https://remoteURL.com/r/: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'https://myWebSite.com' is therefore not allowed access.
我无法访问外部服务器,因此无法更改标头。
如果我不期望 Ajax 中调用的远程 URL 有任何返回,那么尽管控制台中抛出了有关跨域策略的错误,这段代码是否仍然有效?
【问题讨论】:
-
不,无论您是否期望得到回复,CORS 旨在限制不应允许的访问。在这种情况下,异地端点不允许您的域通过 ajax 远程访问它。
-
既然有
async: false,为什么还要使用done? -
是的,您的代码可以正常工作 - 它只是无法访问结果。你真的需要那个“发送”来登录吗?
-
@Bergi 不,我不需要 .done() 回调,但是当我删除它时并没有太大变化
标签: javascript jquery ajax proxy cross-domain