javascript - (CORS) - 跨源资源共享连接问题

标签 javascript jquery google-chrome-extension cors firefox-addon

我目前正在为大学项目创建浏览器扩展。然而,当我写下扩展时,我遇到了一个非常奇怪的问题。为了充分了解我的情况,我需要用债务来描述我的问题所在。

我目前正在开发的扩展程序必须具有检查浏览器是否可以连接到互联网的功能。这就是为什么我决定创建一个非常简单的 AJAX 请求函数,并根据该函数返回的结果来确定用户是否有互联网连接。

这就是为什么我创建了这个非常简单的 AJAX 函数,您可以在这一行下面看到它。

$.ajax({
    url: "https://enable-cors.org/index.html",
        crossDomain: true,
    }).done(function() {
        console.log("The link is active");
    }).fail(function() {
        console.log("Please try again later.");
    });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

到目前为止,只要我了解它在做什么,它就工作正常。例如,如果您按原样运行该函数,如果您将 url 更改为“index273.index”一个不存在的文件,它将成功连接到该 url 并使用“.done(function...”进行处理将使用“.fail(function...”进行处理。我对结果很满意,直到我决定进一步测试它并从计算机上拔下电缆。然后,当我启动扩展程序时,它返回了最后的结果浏览器已与互联网连接。我对该函数执行此操作的解释是因为它正在缓存 url 结果,如果无法连接,则会给出最后的缓存值。我尝试解决此问题的下一步是添加“缓存: false”在“crossDomain:true”属性之后,但之后当我启动扩展时,它会给出以下错误:

Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://enable-cors.org/index?_=1538599523573. (Reason: CORS header 'Access-Control-Allow-Origin' missing).

如果有人能帮我解决这个问题,我将不胜感激。我想提前为我的英语道歉,但这不是我的母语。

PS:我试图在弹出菜单中实现此功能,而不是在“content_scripts”类别中实现。我目前正在 Firefox v62.0.3(我撰写本文时的最新可用版本)下进行测试。

最诚挚的问候, 乔治

最佳答案

也许您可以尝试使用 Navigator 对象,而不是调用 URL 来检查互联网连接是否可用:https://developer.mozilla.org/en-US/docs/Web/API/Navigator/connection

关于javascript - (CORS) - 跨源资源共享连接问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52635536/

相关文章:

javascript - 如何删除 x 轴 Highchart 中出现的额外数字

php - 如何保存网页状态(动态添加内容),以便下次重新加载

javascript - 如何读取当前页面的 HTML 以从 Chrome 扩展程序访问元素?

javascript - 使用 Google Feeds API 使用 "tap"在 jquery mobile 中自动生成 feed 列表

javascript - 在 Canvas 中旋转图像

javascript - 自定义函数对于某些值莫名其妙地停止工作

javascript - 如何在 Google Chrome 扩展程序中获取网络请求的结果?

javascript - 动态沙箱内联 JavaScript 的最佳方法是什么?

jquery slide - 如何处理 div 点击

javascript - Chrome 扩展程序 : Toggle content_script via browser_action