Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension
报错信息:
Access to XMLHttpRequest at 'file:///C:/Users/Administrator/Desktop/111/data/array.txt' from origin 'null' has been blocked by CORS policy: Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https.
报错方式:Chrome浏览器打开本地js文件用datatables插件的ajax方法访问本地的obj.txt文件。
代码如下:
<body>
<table id="example" class="display" cellspacing="0" width="100%">
<thead>
<tr>
<th>Name</th>
<th>Position</th>
<th>Office</th>
<th>Extn.</th>
<th>Start date</th>
<th>Salary</th>
</tr>
</thead>
<tfoot>
<tr>
<th>Name</th>
<th>Position</th>
<th>Office</th>
<th>Extn.</th>
<th>Start date</th>
<th>Salary</th>
</tr>
</tfoot>
</table>
</body>
<script src="http://cdn.bootcss.com/jquery/1.10.2/jquery.min.js"></script>
<script type="text/javascript" language="javascript" src="https://cdn.datatables.net/1.10.15/js/jquery.dataTables.min.js"></script>
<script>
$(document).ready(function() {
$("#example").DataTable({
"ajax": "data/obj.txt",
"columns": [{
"data": "name"
}, {
"data": "position"
}, {
"data": "office"
}, {
"data": "extn"
}, {
"data": "start_date"
}, {
"data": "salary"
}]
});
});
</script>
报错分析:
1.判断为ajax的跨域访问问题
2.本地jsp没有通过服务器直接ajax中用jsonp访问本地js,使用file协议!
3.原以为能解决跨域问题,但是上面的报错信息就已经说明了,ajax跨域只支持这些协议框架:http,https,data,chrome(Chrome浏览器),chrome-extension(Chrome扩展插件),chrome-extension-resource(Chrome扩展资源),就是没有file协议!
百度到的解决方法大多都是说在google桌面图标右键—属性—快捷方式标签页—目标(就是google浏览器的安装路径)中路径后面添加" --allow-file-access-from-files",(注意前面有空格)。
或者找到谷歌浏览器chrome.exe安装路径复制下来,我的是E:\Google\Application\chrome.exe,再打开cmd,直接输入命令
"E:\Google\Application\chrome.exe" --allow-file-access-from-files
但是上述方法并没有解决我的报错,用Firefox不会报错,也就是说Filefox支持file协议下的AJAX请求。但是我依旧更喜欢强大的谷歌。
然后一刹那间灵光一闪,配置一个本地http服务器试试。
对于一些刚入门的同学,配一个HTTP服务器(比如Apache、IIS等)比较繁琐,但是我们可以通过插件来配置,比如我用的是VSCode,
1.打开VsCode的插件安装功能,在左侧的最底部位置,
2.接着在搜索框中输入live server,应该是搜索到的第一个,然后点击安装,
3.安装完成后点击重新加载(reload),重新启动vscode后,软件的右下角就会出现一个go live 的状态栏,这个就是启动刚刚安装的插件开关,
4.点击启动服务器,会自动运行系统默认的浏览器,默认的端口号是5500,到这里服务器就能跑起来了,运行我们的文件,报错已经消失。
回到VsCode再次点击即可关闭服务器。
默认是5500端口,那么万一端口冲突呢,或者我们需要自己设置端口呢,接下来就简单介绍下如何设置服务器的端口和代理。当然如果端口冲突,插件会自动启动其他端口的,这个大家不必担心,放心使用即可。
1.点击左下角的管理-设置,(或者点击左上角的文件--首选项--设置)
2.搜索关键字live server,往下找,我们可以找到live server的相关设置
liveServer.settings.port 是设置端口号的
liveServer.settings.proxy是设置代理的。
其他的设置可以自行查看。
- 零基础学编程021:获取股票实时行情数据
- C# ini文件读写类
- 深度实践:如何用神经网络给黑白照片着色
- C学习笔记(2)--指针
- 零基础学编程019:生成群文章目录
- 零基础学编程026:学什么编程语言最有前途?
- C学习笔记(1)-结构体、预处理与多文件结构程序设计
- 零基础学编程035:群发邮件并不难
- 零基础学编程024:如何快速学会SQL?
- 机器学习的基础讲解:神经网络
- 零基础学编程023:用with实现优雅地释放资源
- Start transaction not working with Revit 2014
- 零基础学编程034:解决一个pandas问题
- ShellExecute 启动外部程序 参数详细介绍
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 树莓派基础实验11:U型光电传感器实验
- java 缓冲流+原理图解
- 写一个函数,2 个参数,1 个字符串,1 个字节数,返回截取的字符串,要 求字符串中的中文不能出现乱码
- Java 编程,打印昨天的当前时刻.
- git merge后 丢失文件 以及 代码
- 树莓派基础实验12:PCF8591模数转换器实验
- spring boot多数据源的代码实现
- 树莓派基础实验13:雨滴探测传感器实验
- Java中的TCP通信程序
- Java实现一个简单的文件上传案例
- 树莓派基础实验14:PS2操纵杆实验
- Java反射
- Java Request(域对象+请求转发+原理)详解
- PHP命令执行学习总结
- win10 专业版 提示开机提示你的windows许可证即将过期