今天在给公司做短信触发平台时,遇到跨域权限问题,如下
1、本地发送ajax请求时,调试输出:XMLHttpRequest cannot load file:///E:/webs/extJS/ext-3.3.0/examples/csdn/combobox.txt?_dc=1414738973999.Cross origin requests are only supported for protocol schemes: http, data,chrome-extension, https, chrome-extension-resource.错误
网上百度了很多方法,基本上都是往目标地址后面添加命令,这里分为两个版本的配置方法,谷歌浏览器49版以前的,鼠标移入谷歌浏览器快捷图标(不是快捷图标的需要自己创建一个快捷图标)--右键--属性--快捷方式,在目标地址后面加入命令--disable-web-security,注意:一定要打一个空格再粘贴进去;谷歌浏览器49版以后的,鼠标移入谷歌浏览器快捷图标(不是快捷图标的需要自己创建一个快捷图标,然后在电脑上新建一个目录,例如:C:\MyChromeDevUserData)--右键--属性--快捷方式,在目标地址后面加入命令--disable-web-security --user-data-dir=C:\MyChromeDevUserData,注意:一定要打一个空格再粘贴进去。
2、现在,谷歌浏览器已经可以进行跨域操作了,可是当我进行调试的时候,又来新的问题了,调试输出:Request header field X-Requested-With is not allowed by Ac错误,由于我的服务器脚本是PHP的,所以只需要在PHP脚本中指定以下头部:
header('Access-Control-Allow-Origin: *');
header("Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept");
header('Access-Control-Allow-Methods: GET, POST, PUT,DELETE');
即可。
再次刷新调试没有任何错误,并且可以成功发送短信
注:前端post采用的是mui的ajax,没有使用jquery的ajax,个人表示不怎么喜欢JQ,宁愿写原生的js,后端采用php,如果有朋友遇到类似问题,可以参考一下。