axios跨域请求报错:Request header field content-type is not allowed by Access-Control-Allow-Headers in preflight response.

在做项目时,用到axios,数据用post提交时,老是报错,错误提示为:

1 Access to XMLHttpRequest at ‘http://127.0.0.1:3000/api/add‘ from origin ‘http://localhost:8080‘ has been blocked by CORS policy: Request header field content-type is not allowed by Access-Control-Allow-Headers in preflight response.

如下图:

仔细看看自己跨域配置,设置成这样:

//设置跨域请求
app.all(‘*‘, function (req, res, next) {
  //设置请求头
  //允许所有来源访问
  res.header(‘Access-Control-Allow-Origin‘, ‘*‘)
  //用于判断request来自ajax还是传统请求
  res.header(‘Access-Control-Allow-Headers‘, ‘X-Requested-With‘)
  //允许访问的方式
  res.header(‘Access-Control-Allow-Methods‘, ‘PUT,POST,GET,DELETE,OPTIONS‘)
  //修改程序信息与版本
  res.header(‘X-Powered-By‘, ‘ 3.2.1‘)
  //内容类型:如果是post请求必须指定这个属性
  res.header(‘Content-Type‘, ‘application/json;charset=utf-8‘)
  next()
})

这是因为我在后端设置跨域请求的时候没有所需的请求类型。于是做了如下修改:

//设置跨域请求
app.all(‘*‘, function (req, res, next) {
  //设置请求头
  //允许所有来源访问
  res.header(‘Access-Control-Allow-Origin‘, ‘*‘)
  //用于判断request来自ajax还是传统请求
  res.header("Access-Control-Allow-Headers", " Origin, X-Requested-With, Content-Type, Accept");
  //允许访问的方式
  res.header(‘Access-Control-Allow-Methods‘, ‘PUT,POST,GET,DELETE,OPTIONS‘)
  //修改程序信息与版本
  res.header(‘X-Powered-By‘, ‘ 3.2.1‘)
  //内容类型:如果是post请求必须指定这个属性
  res.header(‘Content-Type‘, ‘application/json;charset=utf-8‘)
  next()
})

结果就可以啦。

原文地址:https://www.cnblogs.com/joyco773/p/11473963.html

时间: 2024-08-29 15:14:46

axios跨域请求报错:Request header field content-type is not allowed by Access-Control-Allow-Headers in preflight response.的相关文章

解决vue axios跨域请求发送两次问题

问题: vue axios跨域请求,在Request Headers加Authorization传递Token时,发现统一请求触发了两次,第一次是Request Method: OPTIONS请求. 原因: 跨域请求时,浏览器会首先使用OPTIONS方法发起一个预请求,判断接口是否能够正常通讯.如果通讯异常,则不会发送真正的请求,如果测试通讯正常,则开始真正的请求. 解决方法: 后台:判断请求方式是OPTIONS,则不处理: 预请求 发送真正请求  PHP解决方法 class Common ex

ArcGIS API for Silverlight 调用WebService出现跨域访问报错的解决方法

原文:ArcGIS API for Silverlight 调用WebService出现跨域访问报错的解决方法 群里好几个朋友都提到过这样的问题,说他们在Silverlight中调用了WebService方法,总报这个错误,贴图如下: 解决办法: 1.确定你的Silverlight项目及承载Silverlight的Web程序根目录下都包含2个跨域文件,分别是crossdomain.xml和clientaccesspolicy.xml: crossdomain.xml文件,如下: <?xml ve

JSONP跨域请求数据报错 “Unexpected token :”的解决办法

原文  http://www.cnphp6.com/archives/65409 Jquery使用ajax方法实现jsonp跨域请求数据的时候报错 “Uncaught SyntaxError: Unexpected token :”,主要问题在于返回的数据格式不正确 本地虚拟两个域名,分别为:www.test.com.www.abc.com http://www.test.com/index.html页面点击按钮,请求返回 www.abc.com域名目录下的文件的数据 ,其代码为: <!DOCT

转 Js 跨域CORS报错 Response for preflight has invalid HTTP status code 405

转自:http://www.cnblogs.com/SilenceTom/p/6697484.html 调用接口遇到Response for preflight has invalid HTTP status code 405这样的错误,是使用PUT方式提交请求接口.Content-Type设置为application/json,JS代码如下: $.ajax({ type: "PUT", url: "http://172.16.200.84:8977/Messages?ses

Js 跨域CORS报错 Response for preflight has invalid HTTP status code 405

调用接口遇到Response for preflight has invalid HTTP status code 405这样的错误,是使用PUT方式提交请求接口.Content-Type设置为application/json,JS代码如下: $.ajax({ type: "PUT", url: "http://172.16.200.84:8977/Messages?sessionId=ee876bfbtest", data:data, beforeSend: fu

springboot vue axios 跨域请求

一个简单的例子 在vue工程中,安装axios npm install axios src/main.js 配置如下 import axios from 'axios' Vue.prototype.$axios = axios Vue.config.productionTip = false axios.defaults.withCredentials = false//这个默认即为false,如果改为true,可以传递session信息,后端要做相应修改来放行,本例中我们用false简单测试

关于AF请求报错Request failed: unacceptable content-type: text/plain 解决方案

NSString *path = @"/resource/getNotice"; NSString *UrlStr = [NSString stringWithFormat:@"%@%@",TCTHttpUrl,path]; NSDictionary *parameters = @{@"pageNo":@"1",@"pageSize":@"10"}; AFHTTPSessionManag

php允许跨域请求

js跨域方式无非就是使用jsonp,这种方法很大众,还有一种方式也可以,那就是在服务器端设置允许任何访问 php中代码为: // 允许a.com发起的跨域请求 header("Access-Control-Allow-Origin: http://a.com"); //如果需要设置允许所有域名发起的跨域请求,可以使用通配符 * header("Access-Control-Allow-Origin: *"); // 允许任意域名发起的跨域请求 header('Acc

ajax j跨域请求sonp

需求 遇到的问题 解决方案 需求 如今,该项目需要获得数据访问外部链接.它是跨域.使用ajax 直提示: 遇到的问题 1. 怎样使用ajax 跨域请求数据 2. 能不能post请求 解决的方法 经过网上查找资料.能使用jsonp请求跨域数据. jsonp请求数据仅仅能get.不支持post跨域请求 用法.见代码: $.ajax({ type: "post",//这里写post也没用,也是get请求 url: "url", dataType: "jsonp&