配置Chrome支持本地(file协议)的AJAX请求

https://www.cnblogs.com/micua/p/chrome-file-protocol-support-ajax.html

什么问题

WEB开发过程中,很多时候我们都是写一些简单的Demo,并不是开发一个完整项目,此时我们常见的操作是:

  • 新建文件夹
  • 新建需要的文件
  • 在Sublime(或其他编辑器)中完成DEMO的编码
  • 双击HTML文件,直接在浏览器中运行演示

如果此时Demo中有AJAX操作,浏览器就会报一个错:

XMLHttpRequest cannot load file:///Users/iceStone/Documents/Learning/angular/demo/angular-moviecat/movie/view.html. Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https, chrome-extension-resource.

原因很简单,浏览器(Webkit内核)的安全策略决定了file协议访问的应用无法使用XMLHttpRequest对象,错误消息中也很清楚的说明了:

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

跨域请求仅支持协议:http, data, chrome, chrome-extension, https, chrome-extension-resource

在某些浏览器中是允许这种操作的,比如Firefox浏览器,也就是说Filefox支持file协议下的AJAX请求。

解决办法

作为我个人最喜欢的Chrome,强大,没什么好说的,只有想不到,几乎没有做不到,所以必须也得支持:

  • Windows:

    • 设置Chrome的快捷方式属性,在“目标”后面加上--allow-file-access-from-files,注意前面有个空格,重新打开Chrome即可。
  • Mac:
    • 只能通过终端打开浏览器:打开终端,输入下面命令:open -a "Google Chrome" --args --disable-web-security然后就可以屏蔽安全访问了[ --args:此参数可有可无]

补充说明

长久来看,你肯定是需要通过HTTP的方式访问你的应用,那就需要配置HTTP服务器软件。但是对于一些刚入门的同学,配一个HTTP服务器(比如Apache、IIS等)比较繁琐,望而却步。

  • 对于使用IDE的同学没什么好说的,每个用于Web开发的IDE都内置http服务器,不用单独配置。
  • 对于喜欢轻量级编辑器的同学,比如Sublime Text,它默认是没有内置HTTP服务器的

接下来推荐一款Sublime的插件Sublime Server,这个插件可以提供一个静态文件HTTP服务器,具体使用方式如下:

  • 安装Package Control(Sublime的插件管理工具),不会安装自行Google
  • Command+Shift+PCtrl+Shift+P打开命令面板,输入Package Control: Install Package

  • 稍等片刻(此时会连接到插件提供商的服务器,比较慢,有可能背墙),搜索SublimeServer

  • 安装完成过后通过Tool → SublimeServer → Start SublimeServer

  • 一定要用打开文件夹的方式使用Sublime,否则没有办法正常使用SublimeServer。

  • 打开HTML文件,在右键菜单中选择View in SublimeServer,此时就可以以HTTP方式在浏览器中访问该文件了,
  • 如果该选项是灰色的,那就说明没有启动SublimeServer,Tool → SublimeServer → Start SublimeServer

到此为止,你已经可以在Sublime中使用HTTP服务器了。

可能遇到的问题

如果Start SublimeServer不能点,可能是当前8080端口被占用了(SublimeServer默认使用8080端口)

解决方法就是打开配置文件将端口修改为其他端口:

以下是我的配置:

{
    "attempts": 5,
    "autorun": false, // 是否在启动Sublime时自动启动SublimeServer
    "defaultExtension": ".html",
    "interval": 500,
    "mimetypes":
    {
        "": "application/octet-stream",
        ".c": "text/plain",
        ".h": "text/plain",
        ".py": "text/plain"
    },
    "port": 2016 // 端口号
}

当然其他编辑器也有类似的插件。

原文链接

原文地址:https://www.cnblogs.com/yanxiatingyu/p/9500829.html

时间: 2024-11-10 16:18:59

配置Chrome支持本地(file协议)的AJAX请求的相关文章

配置chrome支持本地(file协议)ajax请求

配置chrome支持本地(file协议)ajax请求 网址:配置chrome支持本地(file协议)ajax请求 将html代码拖拽进入chrome通过file协议浏览时,发送的ajax请求本地文件,会报跨域错误.XMLHttpRequest cannot load file:///E:/webs/extJS/ext-3.3.0/examples/csdn/combobox.txt?_dc=1414738973999. Cross origin requests are only support

HTTP协议、Ajax请求

今天这篇文章呢,主要讲的就是关于HTTP协议.Ajax请求以及一些相关的小知识点.虽然内容不算多,可是是很重点的东西~ HTTP协议 1. http:超文本传输协议.简单.快速.灵活.无状态.无连接.2. url:统一资源定位符.     组成部分:协议名://主机名(主机ip):端口号/项目资源地址?传递参数的键值对#锚点     eg: http://192.168.5.151:8080/js/index.php?name=zhangsan#top     ① ip地址在同一网段是唯一的.如

让新版Chrome支持本地跨域请求调试

1.创建一个Chrome的启动快捷方式: 2.右键点击快捷方式属性,然后在目标路径后面,添加以下参数: -disable-web-security -user-data-dir="e:\chromedev" 注意在最新版本的Chrome中,–user-data-dir参数也是必须要添加的,蓝色字体部分可以随便指定到其他路径,这里保存是的Chrome的用户数据的.

chrome实现全浏览器跨域ajax请求

如图,在chrome快捷方式上打开属性栏,在‘目标’栏加上后缀--disable-web-security --user-data-dir.即可实现在此浏览器上所有网页的跨域请求.

如何解决chrome 等浏览器不支持本地ajax请求的问题

XMLHttpRequest cannot load file:///D:/WWW/angularlx/ui-router-test/template/content.html. Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https, chrome-extension-resource. 上述是chrome控制台报错信息,信息的意思很明显

Chrome不支持本地Ajax请求解决?

今天用JQuery操作Ajax时,使用load方法加载html块 结果提示: XMLHttpRequest cannot load file~~~~~~~Origin 'null' is therefore not allowed access 原因如下: Chrome不支持本地Ajax请求,当我在.html文件中访问使用load方法加载文件时就会出现这个问题,就是说这个时候不能加载这个.html文件. 解决方式 打开Chrome快捷方式的属性中设置: 右击Chrome浏览器快捷方式,选择“属性

Chrome不支持本地Ajax请求,解决办法

Chrome不支持本地Ajax请求,当我在.html文件中访问.json文件时就会出现这个问题,就是说这个时候不能加载这个.html文件. 解决方式 打开Chrome快捷方式的属性中设置: 右击Chrome浏览器快捷方式,选择"属性", 在"目标"中加上"--allow-file-access-from-files",注意前面有个空格, 重启Chrome浏览器便可.

Chrome浏览器不支持本地Ajax请求的解决方案

问题描述: 通过Ajax获取本地JSON文件时候,报Received an invalid response. Origin 'null' is therefore not allowed access. 错误. 原因: Chrome浏览器不支持本地Ajax请求,当在html文件中使用Ajax时候,就报错. 解决方案: 右击chrome浏览器快捷方式图标,选择属性,在目标中添加:--allow-file-access-from-files,与chrome.exe之前有个空格.

配置Nginx支持php,出现No input file specified错误的解决方法

今天有一个项目上有一个模块,程序使用php写的,需要的服务器上搭建PHP的环境,由于我公司的服务器都是Windows系列的,本来前两天买了一台新的服务器,上面搭建了IIS服务器,跑的一个ASP的项目,现在又要部署一个PHP的项目,本想直接在IIS上配置让其支持PHP,但一想性能可能不会很高,于是又想用Apache2.2搭建一个环境,这个重量级的有点大,于是又到了Nginx,这个很小的,使用起来很方便,功能是很强大的,配置好后,访问php文件,出现 "No input file specified