关于ajax请求和跨域疑惑

在谷歌浏览器下,打开编写好的本地html,这个html有$.ajax请求,请求的url是远处的服务器,之前都是可以发起ajax请求的,都不会出现如下图所示的情况:
clipboard.png
我试过--allow-file-access-from-files但是不起作用,包括用cmd命令重启电脑都没效果,这个报错是不是说我跨域了?那我之前为什么都可以呢?这就是让我感到困扰的地方,下午试的时候不知道按到什么,突然又可以发起请求了,但是一会又不行了直到现在...
还有就是我用ajax请求的url是远处的服务器那我是不是就是跨域了呢?xhr不是客户端向服务器发起请求吗,那这样,本地客户端和服务器不是就是两个域了,是不是浏览器的自带的cors解决这个问题?那我为什么还会出现这种情况

阅读 2.5k
3 个回答

这是很明显的跨域问题,一般都是靠后端去解决的,如果你想通过前端的话,上面两位的解决方法也可用,我推荐使用gulp或者webpack开启本地服务器去管理你的页面,然后在配置中设置代理服务即可,非常方便,jsonp只可以解决get方法的请求,对post没办法的,所以还是设置代理服务最靠谱。

关键还看你的远端接口是不是始终没发生改变,跨域光靠前端自己是无法解决的,除非你设置一台代理服务器,本地开发可以在本地安装nginx

其实跨域是服务器的一种安全策略, 主要是为了防止 不是服务器容许的地址或者域来访问服务器.
解决方案:

    1. 后台设置允许 你的域名或者直接*.
    2. 如果你用了webpack的话 它自带代理, 就是把你本地访问代理到你要访问的那个服务器上.
    3. nginx的反向代理 应该也是可以的 不过我没有用过 你可以查一下资料试试.
    4. $ajax中有jsonp 模式可以解决跨域问题
       
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题