webpack devserver处理跨域怎么做?
如图,在api.js用对象定义了api,然后再jsx中用BaseUrl.api + '/XXXXX/xxx'来调用接口的,如果使用webpack devserver应该怎么做?
按照图里的配置,运行项目还是从BaseUrl.api 取得接口,没有走webpack devserver。
要解决这个问题应该怎么改动,改api文件还是webpack配置呢?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
你baseurl的地址没有匹配你代理/api,也就是说你接口前必须以/api开头,不能含有域名及端口。
需要理解什么是跨域,以及解决方案。其中一个方案就是服务器代理请求,这就是webpack-dev-server的处理方式。
webpack-dev-server起了一个服务,假设路径叫http://localhost:8080,api
地址假设是http://localhost:8081 通过某个路径(一般是/api)来转发到指定的api接口来解决跨域
假设一个请求的完整路径是:http://localhost:8081/login
那么代码写的路径是: /api/login
控制台看到该请求的路径就是:http://localhost:8080/api/login
请求到达webpack-dev-server后,会根据配置的重写(转发)"^api": ""
它将把以/api开头的字符串替换成空字符串,/api/login重写成/login,
然后拼接上target后变成:http://localhost:8081/login
根据这个过程你可以查看最后生成的路径是否和api接口相同
试试这样:
这样一个缺陷是把所有的请求都转发了,包括websocket,或者 :
最简单的办法是让后台接口允许跨域