跨域产生的原因
ionic项目什么情况下会产生ajax跨域问题
针对ionic项目开渔问题我们怎么去避免
跨域产生的原因:
跨域问题出现在B/S架构,C/S架构不会出现,原因是,B/S架构 ,brows浏览器自己有同源政策检测,如果发现不是自己的orgin就会禁止转发和获取js/jtml对象以及XMLHttpRequest请求。
ionic项目什么情况下会产生ajax跨域问题
当我们执行ionic run ios/android 不会出现跨域问题, 当我们执行 ionic server 或者 ionic run ios/android -l 时会出现跨域问题,原因时 ionic server 时本地的浏览器 chrome/safari 会开启一个本位的web服务,ogrin是127.0.0.1 即 localhost , 任何发送到主机而不是localhost:8100的AJAX请求,都将以localhost:8100作为其origin,因此需要经过CORS预检请求,来查看是否有权限访问该资源; ionic run ios/android -l 首先也是开启一个服务,orgin为 192.168.123.1 ,任何orgin不是 192.168.123.1的请求都会被拦截。
ionic项目怎么避免 跨域问题
1. 在使用调试的使用 关闭浏览器的同源检测禁止,但是启动会看到当前浏览器不安全的提示:
ionic serve 需要调试http --disable-web-security
//chrome 浏览器
open -a "Google Chrome" --args --disable-web-security --user-data-dir
或者
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --disable-web-security --user-data-dir
Chrome 66之后使用这个命令
open -a "Google Chrome" --args --disable-web-security --user-data-dir --disable-features=CrossSiteDocumentBlockingIfIsolating
//safari 浏览器
open -a '/Applications/Safari.app' --args --disable-web-security --user-data-dir