前端页面发送请求post方式出错,打印的是Access-Control-Allow-Origin ...

发布于 2022-09-07 08:38:40 字数 1021 浏览 8 评论 0

后端 express

app.all('*', function(req, res, next) {
    res.header("Access-Control-Allow-Origin", "*");
    res.header('Access-Control-Allow-Methods', 'PUT, GET, POST, DELETE, OPTIONS');
    res.header("Access-Control-Allow-Headers", "X-Requested-With");
    res.header('Access-Control-Allow-Headers', 'Content-Type');
    next();
});

前端 axios

import axios from 'axios'
axios.defaults.baseURL = "http://localhost:5001"
var formdata = new FormData();
formdata.append('file', f);
axios({
    url: '/',
    method: 'post',
    data: formdata,
    headers: {'Content-Type': 'multipart/form-data', 'Access-Control-Allow-Origin': '*'}})
    .then(function (res) {
         console.log(res)
    })
    .catch(function (err) {
         console.log(err)
    })

图片描述

图片描述

在express这个代码上已经加了 app.all这套响应头代码,
在前端发送请求为什么还那样问题?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

熟人话多 2022-09-14 08:38:40

非简单请求和后端设置问题
给你过一遍流程
你请求的时候设置了Access-Control-Allow-Origin
所以请求变成了非简单请求 浏览器会先发出预检OPTIONS请求
携带请求头信息会多出下面 (你的请求为例)

Access-Control-Request-Headers: access-control-allow-origin
Access-Control-Request-Method: POST
Origin: http://你的地址

结果你服务端设置了res.header('Access-Control-Allow-Headers', 'Content-Type');
没有支持access-control-allow-origin
所以预检没通过
抛出错误Request header field ser is not allowed by Access-Control-Allow-Headers in preflight response.

1) 删掉前端的 Access-Control-Allow-Origin 变成简单请求 你前端设置的Access-Control-Allow-Origin也没啥作用
2) 设置后端 res.header('Access-Control-Allow-Headers', 'Content-Type,Access-Control-Allow-Origin');

颜漓半夏 2022-09-14 08:38:40

----- update

我有点半瓶水乱晃的意思了。

刚刚使用 express 测试了一下, xhr 对象也会触发预检。

fetch 也会触发预检,之前答的是错误的。

憧憬巴黎街头的黎明 2022-09-14 08:38:40

你express监听的端口是5001?端口正确的话建议你用cors包

// npm install cors
let cors = require('cors')
app.use(cors())
app.post('/', function (req, res, next) {
  console.log(111)
})
烟柳画桥 2022-09-14 08:38:40

我建议检查一下设置有没有生效,打开 network 面板看一下 response header 先。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文