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

时间:2018-10-03 20:53:16

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

我目前正在为大学项目创建浏览器扩展。但是,当我写下扩展名时,遇到了一个非常奇怪的问题。要完全了解我的情况,我将需要在问题出处的债务中进行描述。

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

这就是为什么我创建了这个非常简单的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,并使用“ .done(function ...”)进行处理(如果将URL更改为“ index273.index”,则该文件不存在)会以“ .fail(function ...”)处理。我对结果感到满意,直到决定进一步测试并从计算机上拔下电缆。然后,当我启动扩展程序时,它返回了从浏览器已与Internet连接。我之所以要执行此功能,是因为它正在缓存url结果,如果无法连接,它将给出最后的缓存值。我尝试解决此问题的下一步是添加“ cache: “ crossDomain:true”属性之后的“ false”,但之后,当我启动扩展程序时,它将出现以下错误:

  

跨域请求被阻止:“同源起源”策略禁止读取https://enable-cors.org/index?_=1538599523573处的远程资源。 (原因:CORS标头“ Access-Control-Allow-Origin”缺失)。

如果有人可以帮助我解决该问题,我将非常感激。我想提前为我的英语道歉,但这不是我的母语。

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

最好的问候, 乔治

2 个答案:

答案 0 :(得分:1)

也许您可以尝试使用导航器对象https://developer.mozilla.org/en-US/docs/Web/API/Navigator/connection

,而不是调用URL来检查互联网连接是否可用

答案 1 :(得分:0)

除非远程服务器允许源(允许的cors),否则您将无法访问它,因为这是一个安全问题。

但是您还可以执行其他操作:

  1. 您可以在加载图像时加载图像并触发事件
  2. 您可以通过JSONP响应访问远程JSON

但是您不能访问其他页面,因为(除非服务器允许)这是一个安全问题。