zoukankan      html  css  js  c++  java
  • 【跨域异常】Cross origin requests are only supported for protocol schemes: http, data, chrome,chrome-exten

    一、背景描述

    下面是我用ajax异步请求时的写法,请注意url是怎么写的,下面的错误就是由于这个url的写法导致的。

    // 获取省份列表
    $(document).ready(function () {
         $.ajax({
              url: "devlsub.iot.com:53310/city/getProviceList",    //请求的url地址
              dataType: "json",   //返回格式为json
              async: true,//请求是否异步,默认为异步,这也是ajax重要特性
              data: "",    //参数值
              type: "GET",   //请求方式
              success:function(req){
                  console.info(req);
              },
              error:function(){
                  //请求出错处理
                  alert("出错啦")
              }
         });
    });

    二、问题描述

    今天在本地调用服务器上的一个获取省份的列表时,报了如下错误信息:

    Access to XMLHttpRequest at 'devlsub.unisiot.com:53310/city/getProviceList' from origin 'http://localhost:63333' has been blocked by CORS policy: Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https.

    大概意思是从本地的一个域名访问另外一个域名被CORS政策阻止了,跨域请求仅被支持的协议类型为:http, data, chrome, chrome-extension, https 协议。

    三、错误原因

    Javascript出于对安全性的考虑,而禁止两个或者多个不同域的页面进行互相操作。相同域的页面在相互操作的时候不会有任何问题。我们在用跨域的时候,大部分都在知道哪些问题是跨域问题,也知道怎么解决。但是就是具体解决,或者说最终解决,都不理想,或者最终解决不了。

    这个报错问题是因为请求的url没有写明是什么协议,如我只写了url: "devlsub.iot.com:53310/city/getProviceList"。

    四、解决方案

    4.1 方案1

    根据错误提示信息,我修改了url 的写法:url: "http://devlsub.iot.com:53310/city/getProviceList"。然后再去请求这个地址,问题得到完美解决。

    4.2 方案2

    在另一篇博客里记录着,请移步至此:https://blog.csdn.net/weixin_44299027/article/details/94836940

  • 相关阅读:
    泛型
    java unicode补充字符带来的码点和代码单元问题
    GIT相关
    Html5 Canvas学习
    解决animate动画连续播放bug
    自定义对象级别的组件开发
    关于常用却忘记的css,jQuery
    json格式初涉
    ajax
    jquery.validation.js的自定义方法
  • 原文地址:https://www.cnblogs.com/no8g/p/13415493.html
Copyright © 2011-2022 走看看