Mac上设置Chrome跨域

在本地用js文件发送ajax请求,向服务器获取数据时,会报html

Failed to load http://xxx.xx.xx.xxx
No 'Access-Control-Allow-Origin' header is present on the requested resource
Origin 'http://localhost:63342' is therefore not allowed access.

缘由是出现了跨域,而ajax只能同源使用前端

何为同源nginx

浏览器安全的基石是"同源政策"(same-origin policy)
1995年,同源政策由 Netscape 公司引入浏览器。目前,全部浏览器都实行这个政策。
最初,它的含义是指,A网页设置的 Cookie,B网页不能打开,除非这两个网页"同源"。所谓"同源"指的是"三个相同"。
协议相同
域名相同
端口相同
举例来讲,http://www.example.com/dir/page.html 这个网址
协议是 http:// ,域名是 www.example.com ,端口是80(默认端口能够省略)
它的同源状况以下
http://www.example.com/dir2/other.html 同源
http://example.com/dir/other.html 不一样源(域名不一样)
http://v2.www.example.com/dir/other.html 不一样源(域名不一样)
http://www.example.com:81/dir/other.html 不一样源(端口不一样)
1.2 目的
同源政策的目的,是为了保证用户信息的安全,防止恶意的网站窃取数据。
设想这样一种状况:A网站是一家银行,用户登陆之后,又去浏览其余网站。若是其余网站能够读取A网站的 Cookie,会发生什么?
很显然,若是 Cookie 包含隐私(好比存款总额),这些信息就会泄漏。更可怕的是,Cookie 每每用来保存用户的登陆状态,若是用户没有退出登陆,其余网站就能够冒充用户,随心所欲。由于浏览器同时还规定,提交表单不受同源政策的限制。
因而可知,"同源政策"是必需的,不然 Cookie 能够共享,互联网就毫无安全可言了。
1.3 限制范围
随着互联网的发展,"同源政策"愈来愈严格。目前,若是非同源,共有三种行为受到限制。
(1) Cookie、LocalStorage 和 IndexDB 没法读取。
(2) DOM 没法得到。
(3) AJAX 请求不能发送。
虽然这些限制是必要的,可是有时很不方便,合理的用途也受到影响。
原文地址:
http://www.ruanyifeng.com/blog/2016/04/same-origin-policy.htmlweb

而本地ip和服务器不是同源,因此ajax发送不成功
那就得想办法解决,去网上找资料发现
flask有库能够用,http://flask-cors.readthedocs.io/en/latest/
nginx也能够作ajax

但需求实际上是前端想在本地调试ajax,因此犯不着去动服务器,由于这个东西存在一些安全隐患
因此找了最简单的方式:chrome

  • chrome有一个叫Allow-Control-Allow-Origin: *的插件,
    https://chrome.google.com/webstore/detail/allow-control-allow-origi/nlfbmbojpeacfghkpbjhddihlkkiljbi
    但这个插件开启了后,在pycharm里用chrome打开html文件会报404,不懂什么问题,但它确实能用flask

  • 还有一个是在mac终端里输入,注意yourname是mac用户的名字
    open -n /Applications/Google\ Chrome.app/ --args --disable-web-security --user-data-dir=/Users/yourname/MyChromeDevUserData/
    这样会打开一个不安全的chrome,至关于沙箱模式的浏览器
    在这个chrome里能随意发送ajax请求,固然也只是作测试用跨域

参考:
http://www.cnblogs.com/mackxu/p/cross-domain.html
http://www.ruanyifeng.com/blog/2016/04/cors.html浏览器

相关文章
相关标签/搜索