【JavaScript】ajax请求本地数据报错:Cross origin requests are only supported for protocol schemes: http, da...

1.问题

使用ajax请求本地数据时,在浏览器调试代码发现控制台报错:

Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https.

 

2.原因

以上错误提示是由于ajax方法涉及到跨域的问题导致,由于没有在服务器环境里运行含有ajax方法的页面,而是直接通过浏览器打开(类似file:///的访问形式,即file协议)

本地页面ajax()请求本地页面,须通过服务器环境运行,类似这样:

http://127.0.0.1:8888/index.html

 

3.解决方法

给浏览器传入启动参数(allow-file-access-from-files),允许浏览器进行跨域访问。

找到Chrome浏览器的快捷方式,右键访问“属性”,找到“目标”,然后在后面加上 --allow-file-access-from-files,注意前面要有空格,不然会报错。填好之后选择右下角的“应用”,然后重启服务器。

填好如下:

C:\Users\yang\AppData\Local\Google\Chrome\Application\chrome.exe –-allow-file-access-from-files

 

 

参考文章:

https://www.cnblogs.com/micua/p/chrome-file-protocol-support-ajax.html
https://blog.csdn.net/DFF1993/article/details/80975878

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
### 回答1: 这个错误信息表明浏览器的跨域资源共享 (CORS) 策略阻止了从“origin null”发出的请求。浏览器只支持以下协议方案的跨域请求: httpdata、chrome、chrome-extension、chrome-untrusted、https。 ### 回答2: "从源 'null' 的 CORS 策略被阻止:跨源请求仅支持协议方案:httpdata、chrome、chrome-extension、chrome-untrusted、https。"这个错误通常出现在使用 JavaScript 进行跨域请求时。 跨域请求是指浏览器试图从一个源(或域名)向另一个源发出 AJAX 请求时,浏览器会在控制台中抛出错误。CORS 策略是一种防止跨域攻击的安全措施,它限制了浏览器从一个源向另一个源发出 AJAX 请求。 这个错误提示的意思是,源为 'null' 的请求被阻止了,因为该请求不满足允许的协议方案。原因可能是你在浏览器中运行的 JavaScript 代码从一个没有设置协议(例如‘file://’)的本地文件中加载了 HTML 页面,然后试图发出 AJAX 请求。 要解决这个问题,有几个办法: 1.将你的 HTML 页面放置到一个 Web 服务器上,并通过 HTTPHTTPS 协议打开它。 2.你可以在使用 AJAX 请求时指定协议方案,例如,在 jQuery 中,你可以设置: $.ajax({ type: "POST", dataType: "json", url: "http://example.com/api", headers: { "X-Requested-With": "XMLHttpRequest" }, success: function(data) { } }); 这里需要将 URL 参数中的协议方案改为`http://`或者`https://`。 3.运行 Chrome 浏览器时,可以在启动参数中添加 --disable-web-security选项来禁用 CORS 策略。 最好的解决办法是使用合适的协议方案来打开 HTML 页面,并在 AJAX 请求中使用相应的协议方案。这样不仅可以解决这个错误,也可以保证网络安全。 ### 回答3: CORS(Cross-Origin Resource Sharing)是一种安全机制,可以防止恶意站点从其他域名获取资源。当浏览器尝试从另一个域请求数据时,如果目标网站返回一个不包含当前源(Origin)的 Access-Control-Allow-Origin 头部,浏览器会阻止响应,这就是跨域请求被阻止的原因。 该错误消息"from origin 'null' has been blocked by cors policy"通常出现在开发过程中,特别是当您在开发环境中使用本地主机和端口同时使用AJAX请求时。 该错误信息意味着您的请求被拒绝了,因为您的请求是跨域的,源为"null"并且协议方案不符合CORS策略。要解决该问题,您需要做出以下更改: 1. 首先,您需要确保您的请求被发送到合适的端点,并且有效负载与您所期望的数据一致。您可以使用Chrome DevTools检查HTTP请求的正文内容和标头信息,确保它们是正确的。 2. 您还需要在服务器端配置 CORS 安全策略。您需要将 Access-Control-Allow-Origin 头部设置为您希望允许的来源。如果您的站点不需要跨域访问,您可以使用"*"将允许任何来源访问您的站点。 3. 如果您仍然遇到问题,请尝试使用反向代理将请求代理到另一个域,并让服务器端对请求进行处理。有些Web服务器可能会相应地配置CORS安全策略。 总之,当您遇到此错误时,说明您在跨域请求时出现了问题。要解决此问题,您需要检查您的请求负载和头部信息是否正确,配置CORS安全策略,或使用反向代理将请求代理到您的服务器。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

狮子王量化

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值