Request header field content-type is not allowed by Access-Control-Allow-Headers in preflight respon

一、问题:

跨域请求中包含自定义header字段时,浏览器console报错。

Request header field xfilesize is not allowed by Access-Control-Allow-Headers

1 想要实现前后分离,首先得跨域
2 怎么跨域,在后端中 servlet 或 filter 设置请求头,然后就出问题了
3 has been blocked by CORS policy: Request header field content-type is not allowed by Access-Control-Allow-Headers in preflight response
已被CORS策略阻止:响应请求头,不允许请求标头字段内容类型
4 问题就出在这,思考了很久,代码好像没错啊

response.setHeader("Access-Control-Allow-Origin");
response.setHeader("Access-Control-Allow-Credentials", "true");

5 百度了之后,原因:

包含自定义header字段的跨域请求,浏览器会先向服务器发送OPTIONS请求,探测该服务器是否允许自定义的跨域字段。
如果允许,则继续实际的POST/GET正常请求,否则,返回标题所示错误

6 说白了就是,要有自定义请求头和响应头完成跨域交互,浏览器要求的(浏览器版本新)

7 java 自定义请响应头,给浏览器一个响应,带这个请求头的放行

  // /* 允许跨域的请求头 */                                        // 这里 指定 自己起一个   
  response.setHeader("Access-Control-Allow-Headers", "Content-Type,Access-Control-Ajax-Headers");
  response.setHeader("Access-Control-Ajax-Headers", "cros");// 自定义的

8 前端请求头,和后端对应

{'Access-Control-Ajax-Headers': 'cors'}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CORS(跨域资源共享)是一种浏览器安全机制,用于限制跨域请求的访问权限。当浏览器发起跨域请求时,服务器需要在响应中设置一些特定的头部信息来允许或拒绝请求。其中一个常见的错误是"has been blocked by CORS policy: Request header field content-type is not allowed by Access-Control-Allow-Headers in preflight response.",这意味着服务器不允许在预检请求的响应中包含"Content-Type"头部字段。 解决这个问题的方法是在服务器端进行配置,允许"Content-Type"头部字段。具体的配置方法取决于你使用的服务器端技术。以下是一些常见的服务器端配置示例: 1. 对于Node.js的Express框架,可以使用cors中间件来配置CORS策略。在服务器代码中添加以下代码: ```javascript const express = require('express'); const cors = require('cors'); const app = express(); app.use(cors()); // 其他路由和中间件配置... app.listen(3000, () => { console.log('Server is running on port 3000'); }); ``` 2. 对于Java的Spring框架,可以使用@CrossOrigin注解来配置CORS策略。在控制器类或方法上添加该注解,如下所示: ```java @RestController @CrossOrigin(origins = "http://example.com") public class MyController { // 控制器方法... } ``` 3. 对于Python的Django框架,可以使用django-cors-headers库来配置CORS策略。在项目的设置文件中进行配置,如下所示: ```python INSTALLED_APPS = [ # 其他应用... 'corsheaders', ] MIDDLEWARE = [ # 其他中间件... 'corsheaders.middleware.CorsMiddleware', ] CORS_ORIGIN_ALLOW_ALL = True # 或者指定允许的域名 CORS_ORIGIN_WHITELIST = [ 'http://example.com', ] # 其他设置... ``` 这些是一些常见的服务器端配置示例,具体的配置方法取决于你使用的服务器端技术。通过配置CORS策略,你可以解决"has been blocked by CORS policy: Request header field content-type is not allowed by Access-Control-Allow-Headers in preflight response."的问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值