Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >跨域问题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

作者头像
全栈程序员站长
发布于 2022-06-30 12:54:19
发布于 2022-06-30 12:54:19
3.5K02
代码可运行
举报
运行总次数:2
代码可运行

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

跨域问题解决方案: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.

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

错误原因:

本地路径和目标路径不是同一个域名下引起的跨域问题,并且,就算两个域名是同一个一级域名不同二级域名的时候,例如 a.baidu.comb.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样式表,图像和脚本等资源。

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

解决方案:

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

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

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

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<meta http-equiv="Access-Control-Allow-Origin" content="*" />

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<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却默认不支持跨域,需要我们指定一下。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//例如
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.cn/131891.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
跨域问题(CORS / Access-Control-Allow-Origin)
最近在项目中,调用Eureka REST接口时,出现了CORS跨越问题(Cross-origin resource sharing),在此与大家进行分享,避免多走些弯路。
xcbeyond
2020/10/27
2.2K0
跨域问题(CORS / Access-Control-Allow-Origin)
别在问我跨域问题了,跨域详解以及前端、后端、运维解决的方法统统写在这里了。
跨域问题一直是前端的一大难题,从前端出道到至今,无论是自己还是身边的同事,以及网上前端朋友都被这个问题困扰着。
星宇大前端
2022/03/09
39.3K0
别在问我跨域问题了,跨域详解以及前端、后端、运维解决的方法统统写在这里了。
为什么会有OPTIONS请求
在做项目时,很多时候发送一个post请求,是先发送一个option请求,然后再发送post请求,一直这么用之前也没有仔细思考,今天有时间,好好了解一下为什么会多一次请求。 疑问1:什么是options请求 OPTIONS请求方法的主要用途有两个: 1、获取服务器支持的HTTP请求方法; 2、用来检查服务器的性能。例如:AJAX进行跨域请求时的预检,需要向另外一个域名的资源发送一个HTTP OPTIONS请求头,用以判断实际发送的请求是否安全。 这是浏览器给我们加上的,后端并没有做任何操作。 疑问2:为什么会
吴裕超
2018/02/28
54.5K0
为什么会有OPTIONS请求
跨域问题
​ 同源策略是一种约定。同源是指”协议+域名+端口”三者相同,就算两个不同的域名指向同一个ip地址,也不属于同源。
Cloud-Cloudys
2020/07/07
8860
10 种CORS跨域解决方案
这是一个老生常谈的话题,以前我觉得这种基础文章没有什么好写的,最近为了线上问题深入了解底层,确实有点东西,下面汇总成10种方案。
sunsky
2022/09/09
7.1K0
10 种CORS跨域解决方案
实战 解决CORS error(跨域资源共享错误)
我通过自建cos源cos.xpblog.cn,托管本博客(www.xpblog.cn)的静态文件,引用ttf文件时,出现了CORSerror(跨域资源共享错误)
小屁的博客
2022/05/13
49.9K2
实战 解决CORS error(跨域资源共享错误)
CORS解决跨域问题
浏览器中,网站A的网络请求访问网站A的资源(图片,HTTP请求)是很顺畅的,而想访问网站B的资源,就要面对跨域资源访问的问题了。面对跨域问题,有很多的解决方案,本文讨论使用 CORS 来解决的方案。
张云飞Vir
2020/03/27
2.1K0
ajax cors跨域_jquery跨域
Jsonp 的实现原理就是:创建一个回调函数,然后在远程服务上调用这个函数并且将 JSON 数据形式作为参数传递,完成回调。
全栈程序员站长
2022/09/23
2.9K0
九种实用的前端跨域处理方案(转载非原创)
转载来源:https://www.cnblogs.com/ypSharing/p/corsHanlder.html
xlj
2021/09/20
1.5K0
SpringMvc解决js跨域
跨站 HTTP 请求(Cross-site HTTP request)是指发起请求的资源所在域不同于该请求所指向资源所在的域的 HTTP 请求。比如说,域名A(http://domaina.example)的某 Web 应用程序中通过标签引入了域名B(http://domainb.foo)站点的某图片资源(http://domainb.foo/image.jpg),域名A的那 Web 应用就会导致浏览器发起一个跨站 HTTP 请求。在当今的 Web 开发中,使用跨站 HTTP 请求加载各类资源(包括CSS、图片、JavaScript 脚本以及其它类资源),已经成为了一种普遍且流行的方式。
王念博客
2019/07/24
3.3K0
跨域问题及CORS解决跨域问题方法
跨域不一定会有跨域问题。因为跨域问题是浏览器对于ajax请求的一种安全限制:一个页面发起的ajax请求,只能是于当前页同域名的路径,这能有效的阻止跨站攻击。
Java架构师必看
2021/03/22
13K0
Web漏洞 | CORS跨域资源共享漏洞
有关于浏览器的同源策略和如何跨域获取资源,传送门 -->浏览器同源策略和跨域的实现方法
Gcow安全团队
2020/03/19
8.3K0
Web漏洞 | CORS跨域资源共享漏洞
跨域资源共享(CORS)
简单先了解一下CORS,方便我们后续去挖一些CORS的漏洞,最近CORS也是比较火的!
黑伞安全
2019/10/16
3.8K0
对象存储COS跨域CORS问题小结
CORS(Cross-origin resource sharing) 中文名称"跨域资源共享",由于安全原因,Web 应用程序默认情况只能在同源(协议、域名和端口)的情况下向服务器获取数据。
吴硕卫
2020/11/19
9.7K0
对象存储COS跨域CORS问题小结
CORS Cross Origin Resource Sharing
CORS/Cross-Origin Resource Sharing/跨域资源共享/HTTP访问控制
vanguard
2020/09/14
5840
你不知道的CORS跨域资源共享
了解下同源策略 源(origin)*:就是协议、域名和端口号; 同源: 就是源相同,即协议、域名和端口完全相同; 同源策略:同源策略是浏览器的一个安全功能,不同源的客户端脚本在没有明确授权的情况下,不能读写对方资源; 同源策略的分类: DOM 同源策略:即针对于DOM,禁止对不同源页面的DOM进行操作;如不同域名的 iframe 是限制互相访问。 XMLHttpRequest 同源策略:禁止使用 XHR 对象向不同源的服务器地址发起 HTTP 请求。 不受同源策略限制: 页面中的链接,
keyWords
2019/03/20
9160
你不知道的CORS跨域资源共享
怎么解决跨域
存在浏览器同源策略,所以才会有跨域问题。那么浏览器是出于何种原因会有跨域的限制呢。其实不难想到,跨域限制主要的目的就是为了用户的上网安全。
程序员子龙
2024/04/30
2210
C#进阶-.NET WebService跨域CORS问题解决方案
在现代的Web应用程序开发中,跨域资源共享(Cross-Origin Resource Sharing, CORS)问题是开发者经常遇到的一个挑战。特别是当前端和后端服务部署在不同的域名或端口时,CORS问题就会显得尤为突出。在这篇博客中,我们将深入探讨如何在 .NET WebService 中解决CORS问题,帮助开发者顺利实现跨域请求。
Damon小智
2024/05/14
5790
C#进阶-.NET WebService跨域CORS问题解决方案
ASP.NET WebApi+Vue前后端分离之允许启用跨域请求
  这段时间接手了一个新需求,将一个ASP.NET MVC项目改成前后端分离项目。前端使用Vue,后端则是使用ASP.NET WebApi。在搭建完成前后端框架后,进行接口测试时发现了一个前后端分离普遍存在的问题跨域(CORS)请求问题。因此就有了这篇文章如何启用ASP.NET WebApi 中的 CORS 支持。
追逐时光者
2020/06/19
2.9K0
CORS跨域漏洞的学习
最近斗哥在学习CORS的漏洞和相关的一些知识梳理,网站如果存在这个漏洞就会有用户敏感数据被窃取的风险。
漏斗社区
2018/12/29
4.1K0
相关推荐
跨域问题(CORS / Access-Control-Allow-Origin)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验