【问题标题】:Javascript - XMLHttpRequest receive nullJavascript - XMLHttpRequest 接收 null
【发布时间】:2019-06-27 14:59:36
【问题描述】:

网络标签上的 chrome 开发工具中,我可以看到 200 请求

问题是我在回复中收到 null 和以下错误消息

跨域读取阻塞 (CORB) 阻止了跨域响应

function submit(id,player){

    var http = new XMLHttpRequest();

    var guess = document.getElementById(id).value

    http.onreadystatechange = function(){
        if(http.readyState == 4 && http.status == 200){
            console.log(http.response)
        }
    }

    http.open("GET", "https://www.myEndPoint.com, true);
    http.responseType="json"
    http.send();

}

【问题讨论】:

  • 必须在服务类中添加CORS注解(跨域异常),查看以下链接spring.io/guides/gs/rest-service-cors
  • @ArunPrasat,谢谢。我无权访问服务器,这是我需要为工作做的一个挑战。那么据我所知,问题出在服务器端正确吗?
  • 客户端 JS 不能从其他服务器请求内容,除非服务器明确允许这样做。 developer.mozilla.org/de/docs/Web/HTTP/CORS(有两种常见的解决方案:使用 cors 代理或通过您的服务器路由请求)
  • 是的,正确 因为 UI 和 api 有不同的主机名,所以不允许。它会抛出 CORS 异常。尝试在 API 中添加 CORS 注释或使用相同的主机名部署 UI 和 API。
  • @ArunPrasat - 错误是 CORB,而不是 CORS

标签: javascript xmlhttprequest cross-origin-read-blocking


【解决方案1】:

CORB 是 Chromium 特有的安全功能。

见:https://chromium.googlesource.com/chromium/src/+/master/services/network/cross_origin_read_blocking_explainer.md

特别是:

当 CORB 决定响应需要受 CORB 保护时,响应被修改如下:

  • 响应正文被替换为空正文。
  • 响应标头已删除。

这些点是否适用于您的端点?

【讨论】:

  • 感谢您的回答,是的,响应标头的响应为空 -----Access-Control-Allow-Headers: authorization,content-type,x-clientdetails,x-goog- authuser,x-goog-encode-response-if-executable,x-javascript-user-agent,x-requested-with Access-Control-Allow-Methods: POST, GET, OPTIONS, PUT, DELETE Access-Control-Allow-来源:* 允许:POST、GET、OPTIONS、PUT、DELETE
  • 在 Firefox 上我收到此错误----(原因:CORS 标头“Access-Control-Allow-Origin”缺失
  • 不知道这是否是问题所在,但您缺少 url 中的右引号 => http.open("GET", "myEndPoint.com, true);
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-23
  • 1970-01-01
  • 2012-12-15
  • 1970-01-01
  • 2014-12-18
  • 2019-11-25
  • 1970-01-01
相关资源
最近更新 更多