跨域问题Access to XMLHttpRequest‘*‘from origin ‘*‘ has been blocked by CORS..Access-Control-Allow-Origin[通俗易懂]

跨域问题Access to XMLHttpRequest‘*‘from origin ‘*‘ has been blocked by CORS..Access-Control-Allow-Origin[通俗易懂]跨域问题解决方案:CORSAccesstoXMLHttpRequestat’*’fromorigin’*’hasbeenblockedbyCORSpolicy:Responsetopreflightrequestdoesn’tpassaccesscontrolcheck:No’Access-Control-Allow-Origin’header…

大家好,又见面了,我是你们的朋友全栈君。

跨域问题解决方案:CORS

Access to XMLHttpRequest at ‘*’ from origin ‘*’ has been blocked by CORS policy: Response to preflight request doesn’t pass access control check: No ‘Access-Control-Allow-Origin’ header is present on the requested resource.

跨域问题Access to XMLHttpRequest‘*‘from origin ‘*‘ has been blocked by CORS..Access-Control-Allow-Origin[通俗易懂]

从源’本地路径‘访问 ‘目标路径(请求链接)‘文本传输请求已被CORS策略阻塞:对预置请求的响应未通过访问控制检查:请求的资源上不存在’Access- control – allow – origin ‘报头。

错误原因:

本地路径和目标路径不是同一个域名下引起的跨域问题,并且,就算两个域名是同一个一级域名不同二级域名的时候,例如 a.baidu.com  和 b.baidu.com 是属于不同域的,也是会出现这个问题

介绍

出于安全原因,浏览器限制从脚本内发起的跨源HTTP请求。 例如,XMLHttpRequest和Fetch API遵循同源策略。 这意味着使用这些API的Web应用程序只能从加载应用程序的同一个域请求HTTP资源,除非响应报文包含了正确CORS响应头。

注:这段描述不准确,并不一定是浏览器限制了发起跨站请求,也可能是跨站请求可以正常发起,但是返回结果被浏览器拦截了。

CORS(跨源资源共享)是一个系统,由传输HTTP标头组成,用于确定浏览器是否阻止前端JavaScript代码访问跨源请求的响应

同源安全政策禁止以资源跨域访问。但CORS使Web服务器能够表示他们希望选择允许跨资源访问其资源。

跨域资源共享(CORS) 是一种机制,它使用额外的 HTTP 头来告诉浏览器  让运行在一个 origin (domain) 上的Web应用被准许访问来自不同源服务器上的指定的资源。当一个资源从与该资源本身所在的服务器不同的域、协议或端口请求一个资源时,资源会发起一个跨域 HTTP 请求

如,站点 http://domain-a.com 的某 HTML 页面通过 <img> 的 src 请求 http://domain-b.com/image.jpg。网络上的许多页面都会加载来自不同域的CSS样式表,图像和脚本等资源。

跨域问题Access to XMLHttpRequest‘*‘from origin ‘*‘ has been blocked by CORS..Access-Control-Allow-Origin[通俗易懂]

跨域资源共享( CORS )机制允许 Web 应用服务器进行跨域访问控制,从而使跨域数据传输得以安全进行。现代浏览器支持在 API 容器中(例如 XMLHttpRequest 或 Fetch )使用 CORS,以降低跨域 HTTP 请求所带来的风险。

 

解决方案:

1、如果跨域请求发生在相同一级域名不同二级域名之间

例如:a.baidu.com  和 b.baidu.com

跨域直接在邀请求的接口页面中强制设置域为一级域     document.domain = “baidu.com”;

2、设置接口允许ajax跨域访问

在服务器aspx页面头文件里加:

<meta http-equiv="Access-Control-Allow-Origin" content="*" />

在web.config文件中的 system.webServer 节点下 增加如下配置

<system.webServer>  
    <httpProtocol> 
        <customHeaders> 
            <add name="Access-Control-Allow-Methods" value="OPTIONS,POST,GET"/> 
            <add name="Access-Control-Allow-Headers" value="x-requested-with"/> 
            <add name="Access-Control-Allow-Origin" value="*" /> 
        </customHeaders> 
    </httpProtocol> 
</system.webServer>

网上说的解决方案都是Internet Explorer 8 、9使用 XDomainRequest 对象实现CORS。是不是有这么复杂?于是博主各种百度寻找解决方案。最后发现在调用处指定 jQuery.support.cors = true; 这一句就能解决IE8、9的问题了

这句话的意思就是指定浏览器支持跨域。IE9以上版本的浏览器、谷歌、火狐等都默认支持跨域,而IE8、9却默认不支持跨域,需要我们指定一下。

//例如
jQuery.support.cors = true;
var ApiUrl = "http://b.baidu.com";
$(function () {
    $.ajax({
        type: "get",
        url: ApiUrl + "api/Charging/GetAllChargingData",
        data: {},
        success: function (data, status) {
            if (status == "success") {
                alert("ok");
            }
        },
        error: function (e) {
            alert("error");
        },
        complete: function () {

        }
    });
});

注:我这里设置的*是任意的请求都可以访问,如果需要限制替换成自己的访问地址就可以了。

参考资料:

 HTTP访问控制(CORS)   https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Access_control_CORS

CORS(跨源资源共享)      https://developer.mozilla.org/en-US/docs/Glossary/CORS

 

 

你有困难我帮忙,我住隔壁我姓王。—————– 你隔壁的老王宣。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/131891.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • case label does not reduce to_class not loaded

    case label does not reduce to_class not loadedClassCastException出现原因解决办法出现原因抛出以指示代码已尝试将对象强制转换为它不是实例的子类。例如,以下代码生成一个ClassCastException:对象x=新整数(0);System.out.println((String)x);解决办法这种异常我也不知道有什么能够完全解决的办法,但是可以同instanseof来避免例如:Pet宠物类   Dog狗狗类(继承Pet)  Penguin企鹅类(继承Pet)  Dogdog=(Dog)pet

    2022年9月8日
    3
  • 实时数据库 内存数据库_实时数据库产品

    实时数据库 内存数据库_实时数据库产品这是一款实时和嵌入式软件,用来管理持续增长的复杂数据,来支持高级应用的特性。性能和可靠性,更短的产品开发周期等需求,驱使开发者在他们的设计中,考虑采用经验证的、成熟的商业数据库系统组件来,来满足应用层的这些需求。  McObject公司的eXtremeDB嵌入式数据库系列产品是将高性能、稳定性和简单易用性等特性同时融入了工业基的数据库引擎。  了解eXtremeDB产品系列或eXtreme…

    2022年10月14日
    5
  • Hadoop的安装与配置

    Hadoop的安装与配置Hadoop的安装与配置

    2022年4月23日
    46
  • android galley实现画廊效果

    android galley实现画廊效果青春流水指间、每段路,都有即将要来的旅程每颗心,都有值得期待的成分Android之ImageSwitcher,Gallery用法今天在做一个软件界面时用到了ImageSwitcher和Gallery控件,在看API时,感觉上面的例子讲的不是很具体,效率并不高。在这里我就以一个图片浏览功能来具体说明这两个控件的用法。首先看运行效果:在这里图片我用的是API中的图

    2022年5月16日
    40
  • Linux源码安装_linux源码包的安装

    Linux源码安装_linux源码包的安装最近想搞条形码和二维码,于是安装zbar,好生难搞。wgethttp://downloads.sourceforge.net/project/zbar/zbar/0.10/zbar-0.10.tar.gztar-zvxfzbar-0.10.tar.gzsudoapt-getinstallpython-gtk2-devsudoapt-getinstalll

    2025年6月24日
    5
  • vlan的原理和作用_生态因子作用的基本原理

    vlan的原理和作用_生态因子作用的基本原理相关名词:VirtualLocalAreaNetwork—VLAN、VirtualPrivateNetwork—VPN、VirtualRedundancyProtocol—VRRP等。一。VLAN的作用1.把一个广播帧所能到达的整个范围称为二层广播域,简称广播域。显然,一个交换网络其实就是一个广播域。在该网络中,假定PC0向PC10发送一个单播帧Y…

    2022年8月10日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号