zoukankan      html  css  js  c++  java
  • 解决 js ajax跨域访问报“No 'Access-Control-Allow-Origin' header is present on the requested resource.”错误

    在实现不同端口号之间访问时遇到了跨域报错问题

    前言

    从 http://www.a.com/test.html 发起一个跨域请求,
    请求的地址为: http://www.b.com/test.PH

    在本地用ajax跨域访问请求时报错:

    XMLHttpRequest cannot loadhttp://www.zjblogs.com/. No 'Access-Control-Allow-Origin'
    header is present on the requested resource. Origin 'null' is therefore not allowed access.
    1
    2
    问题原因

    W3C标准里是这么实现HTTP跨域请求的, Cross-Origin Resource Sharing

    简单的来说,就是跨域的目标服务器要返回一系列的Headers,通过这些Headers来控制是否同意跨域。

    Access-Control-Allow-Origin HTTP Response Header
    Access-Control-Max-Age HTTP Response Header
    Access-Control-Allow-Credentials HTTP Response Header
    Access-Control-Allow-Methods HTTP Response Header
    Access-Control-Allow-Headers HTTP Response Header
    Origin HTTP Request Header
    Access-Control-Request-Method HTTP Request Header
    Access-Control-Request-Headers HTTP Request Header
    在 Request 包和 Response 包中都有一些。
    其中最敏感的就是 Access-Control-Allow-Origin 这个 Header, 他是W3C标准里用来检查该跨域请求是否可以被通过。 (Access Control Check)

    解决方法

    1、在java服务器端的filter或者servlet里面添加

    response.setHeader("Access-Control-Allow-Origin", "*");
    2、如果请求的url是aspx页面,则需要在aspx页面中添加代码

    Response.AddHeader("Access-Control-Allow-Origin", "*");
    3、如果请求的url是PHP页面

    header("Access-Control-Allow-Origin: *");
    4、如果请求的url是静态的html页面,则需要在页面中添加meta标签代码:

    <meta http-equiv="Access-Control-Allow-Origin" content="*" />
    “Access-Control-Allow-Origin”表示允许跨域访问,“*”表示允许所有来源进行跨域访问,这里也可以替换为特定的域名或ip。
    很显然,这种方式对非网站拥有人员来说是不能做到的。而且此种方式很容易受到CSRF攻击。

    如果还不行,就把这些都加上吧

    // 指定允许其他域名访问
    1.header('Access-Control-Allow-Origin:*');
    // 响应类型
    2.header('Access-Control-Allow-Methods:POST');
    // 响应头设置
    3.header('Access-Control-Allow-Headers:x-requested-with,content-type');

  • 相关阅读:
    面向对象基础之类与对象
    常用模块(一)
    re模块与正则表达式
    初识模块
    函数进阶篇
    Spring + Mybatis 读写分离
    java包的所有类生成class
    Oralce数据库的优化
    Java 搜索引擎
    JAVA分布式架构的演进
  • 原文地址:https://www.cnblogs.com/Andy-Blog/p/10272825.html
Copyright © 2011-2022 走看看