VUE 前后端分离两个问题

2017-12-26 22:17:10 +08:00
 SlipStupig

我现在项目,前端使用 vue 做页面,后端使用 python

  1. npm run build 后无法显示背景图片(背景图片使用 CSS 写在模板的style标签里面的)

2.使用 axio 请求后端无法将 cookie 设置到浏览器,网上看了一圈方法都不行,withCredentials=true也设置了,但是提示我错误

Failed to load http://localhost:8088/g: The 'Access-Control-Allow-Origin' header has a value 'http://localhost:8088' that is not equal to the supplied origin. Origin 'http://localhost:8080' is therefore not allowed access.

后端设置:

        self.set_header('Access-Control-Allow-Credentials', True)
        self.set_header("Access-Control-Allow-Origin", "http://localhost:8088")
        self.set_header("Access-Control-Allow-Headers", "x-requested-with")
        self.set_header('Access-Control-Allow-Methods', 'POST, GET, OPTIONS')

怎么才能解决呢?

12520 次点击
所在节点    Node.js
32 条回复
greatonce
2017-12-26 22:28:57 +08:00
Failed to load http://localhost:8088/g: The 'Access-Control-Allow-Origin' header has a value 'http://localhost:8088' that is not equal to the supplied origin. Origin 'http://localhost:8080' is therefore not allowed access.

self.set_header("Access-Control-Allow-Origin", "http://localhost:8088")


你用 8080 访问,设置的是 8088 当然不允许访问
Origin 'http://localhost:8080' is therefore not allowed access.
ooTwToo
2017-12-26 23:00:33 +08:00
哈哈哈,楼上真相了,不过你本地可以 Origin 为 * 呀
SlipStupig
2017-12-26 23:01:45 +08:00
@greatonce 我改了之后,后端依然收不到 cookie
SlipStupig
2017-12-26 23:02:08 +08:00
@ooTwToo 不行的,要发送 cookie
TabGre
2017-12-27 07:50:03 +08:00
可以考虑 nginx 转发
arfaWong
2017-12-27 08:00:51 +08:00
开发环境可以用 webpack 的 proxyTable 将请求转发到后端
生产环境使用 nginx 将请求转发到后端
SlipStupig
2017-12-27 08:24:20 +08:00
@arfaWong build 后背景图片没了
guoyang
2017-12-27 08:26:18 +08:00
1.首先 CORS,你的方案是没有错的,并且你的头如 1 楼所说 origin 要设置正确;
2.建议你现在 http://www.test-cors.org/中调通 CORS 的跨站测试;
3.前端也要开启 Credentials,VUE 的设置大概如下
import axios from 'axios'
Vue.prototype.$http.defaults.withCredentials = true
SlipStupig
2017-12-27 09:04:42 +08:00
@guoyang cors 已经设置正确了,vue cert 我也设置了,目前依然报错:

Failed to load http://localhost:8088/a: Redirect from 'http://localhost:8088/a' to 'http://localhost:8088/?next=%2Fa' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:8080' is therefore not allowed access.
twotiger
2017-12-27 09:09:01 +08:00
登录后记得刷新页面
rsl140
2017-12-27 09:13:18 +08:00
axios.defaults.baseURL = 'http://localhost:8088';
qiuyk
2017-12-27 09:17:27 +08:00
@SlipStupig 哥你这端口还是没改呀哈哈哈
SlipStupig
2017-12-27 09:25:12 +08:00
@qiuyk 我改了啊,没用啊
self.set_header('Access-Control-Allow-Credentials', 'true')
self.set_header("Access-Control-Allow-Origin", "http://localhost:8080")
self.set_header("Access-Control-Allow-Headers", "x-requested-with")
self.set_header('Access-Control-Allow-Methods', 'POST, GET, OPTIONS')
MaxBear
2017-12-27 09:26:35 +08:00
跨域了,用 node 代理一下
可以参考 http://www.bear777.com/blog/vue-vue-axios-vue-resource-vue
favicon
2017-12-27 09:31:20 +08:00
webpack 的 proxyTable 里添加 cookieDomainRewrite: "localhost:8080" 不用谢
jeremaihloo
2017-12-27 09:35:15 +08:00
webpack 的 proxyTable 呀,楼上很多人都说了
robinlovemaggie
2017-12-27 09:44:04 +08:00
前后端分离为啥不考虑用 Token 做 Authrization?
469054193
2017-12-27 09:46:51 +08:00
为什么进来变成黑色的了
Terry05
2017-12-27 09:49:33 +08:00
这里怎么成全黑了,看着好难受
changkong
2017-12-27 09:58:06 +08:00
css 图片路径的问题,vue-cli 是在 build->utils.js 里的`ExtractTextPlugin`改下`publicPath`,
```
if (options.extract) {
return ExtractTextPlugin.extract({
use: loaders,
publicPath: '../../', //注意: 此处根据路径, 自动更改
fallback: 'vue-style-loader'
})
} else {
return ['vue-style-loader'].concat(loaders)
}
```

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/417855

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX