zoukankan      html  css  js  c++  java
  • 解决跨域No 'Access-Control-Allow-Origin' header is present on the requested resource.

    用angular发起http.get(),访问后端web API要数据,结果chrome报错:跨域了

    Access to XMLHttpRequest at 'http://127.0.0.1:3000/XXX' 
    from origin 'http://127.0.0.1:4200' has been blocked by CORS policy:
    No 'Access-Control-Allow-Origin' header is present on the requested resource.

    此时后端nodejs显示返回值正常。只是浏览器给拦截了。

    参考https://www.cnblogs.com/relucent/p/4274158.html

    什么是跨域

    当两个域具有相同的协议(如http), 相同的端口(如80),相同的host(如www.google.com),那么我们就可以认为它们是相同的域(协议,域名,端口都必须相同)。

    跨域就指着协议,域名,端口不一致,出于安全考虑,跨域的资源之间是无法交互的

     解决方法很简单,在服务器端的response里添加header,允许前端指定的主机访问

    具体到express 参考 https://www.cnblogs.com/ae6623/p/4433143.html

    app.route("/XXX")
      .get(jsonParser, (req, res) => {
        //do something
        const content = 'OK'
        res.set({'Access-Control-Allow-Origin': 'http://127.0.0.1:4200'})
          .send(content)
      })


    注意要包括 http://,和端口号,最好把这些写在一个配置文件里,在nodejs启动时加载进来,便于在docker等容器里用的时候修改前端的IP和端口

  • 相关阅读:
    .net开发环境的选择
    html头部的一些信息
    SQLHelper类
    C#实现文件下载
    js类
    Winform小知识点
    emacs 代码缩进
    自己喜欢的shell终端配置
    time_wait过多的优化
    Emacs 电子邮件组件RMAIL
  • 原文地址:https://www.cnblogs.com/xuanmanstein/p/10574805.html
Copyright © 2011-2022 走看看