相关疑难解决方法(0)

如何阻止CORB阻止对以CORS标头响应的数据资源的请求?

我正在开发一个Chrome扩展程序,该扩展程序可以将某些网站的请求发送到我控制的API。直到Chrome 73,该扩展程序才能正常工作。升级到Chrome 73之后,我开始出现以下错误:

跨域读取阻止(CORB)使用MIME类型application / json 阻止了跨源响应 http:// localhost:3000 / api / users / 1

根据Chrome关于CORB的文档,如果满足以下所有条件,则CORB将阻止请求的响应:

  1. 该资源是“数据资源”。具体来说,内容类型为HTML,XML,JSON

  2. 服务器以X-Content-Type-Options: nosniff标头作为响应,或者如果省略标头,则Chrome通过检查文件来检测内容类型是HTML,XML还是JSON之一

  3. CORS不允许显式访问资源

另外,根据“从幽灵和熔化的教训”(谷歌I / O 2018) ,现在看来似乎可能增加是重要的mode: cors,以fetch调用,即fetch(url, { mode: 'cors' })

为了解决此问题,我进行了以下更改:

首先,我向API的所有响应添加了以下标头:

Access-Control-Allow-Credentials: true
Access-Control-Allow-Headers: Content-Type
Access-Control-Allow-Methods: GET, POST
Access-Control-Allow-Origin: https://www.example.com
Run Code Online (Sandbox Code Playgroud)

其次,我fetch()将扩展名的调用更新为如下形式:

fetch(url, { credentials: 'include', mode: 'cors' })
Run Code Online (Sandbox Code Playgroud)

但是,这些更改不起作用。我该如何更改以使我的请求不会被CORB阻止?

google-chrome google-chrome-extension cors cross-origin-read-blocking

12
推荐指数
2
解决办法
2万
查看次数

主线程上的同步XMLHttpRequest已弃用...尝试了许多不同的解决方案

我知道这个问题在这里发布了很多次,但是我尝试了所有可以在堆栈溢出时找到的解决方案,但没有一个能够工作.我只是想做一个简单的ajax查询来加载div中的页面.就像这样简单:

function loadHome(){
$('#container').html('<div class="loader"></div>');
$.ajax({
    type: "GET",
    url: "home.php",
        success: function(msg){
            $("#container").html(msg);
        }
});
}
Run Code Online (Sandbox Code Playgroud)

在控制台日志中,我得到了

主线程上的同步XMLHttpRequest因其对最终用户体验的不利影响而被弃用.如需更多帮助,请查看http://xhr.spec.whatwg.org/

除非我重新加载页面,否则主页上的一些javascript将无法运行.该页面默认已加载home.phpdiv内部,但我希望它加载其他页面然后当我点击"home"时它应该正常加载,并且由于该错误而没有发生.我已经尝试使用"async:true",但没有用.我不知道该怎么办.

javascript ajax jquery xmlhttprequest

7
推荐指数
1
解决办法
2万
查看次数

Google Chrome扩展程序Http请求

我想知道Google Chrome扩展程序是否可以发出HTTP请求并解析结果的正文(如Curl).例如,有一个服务器1.2.3.4 ?a=1&b=2通过汇总URL参数来回答问题.查询"http://1.2.3.4?a=1&b=2"将返回包含的主体3,我的扩展程序想要提交此类查询并解析结果.

任何帮助,将不胜感激.

javascript google-chrome google-chrome-extension

2
推荐指数
1
解决办法
7610
查看次数