我有我的api在Django和Django REST框架(DRF)。
这是我的设置文件:
DEBUG = False
ALLOWED_HOSTS = ['http://localhost:3000', 'http://127.0.0.1:3000']
# Application definition
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'rest_framework',
'corsheaders',
'MyApp.apps.MyappConfig',
]
REST_FRAMEWORK = {
'DEFAULT_PERMISSION_CLASSESS': 'rest_framework.permissions.AllowAny',
}
# React's Port : 3000
CORS_ORIGIN_WHITELIST = [
'http://localhost:3000',
'http://127.0.0.1:3000',
]
CORS_ORIGIN_ALLOW_ALL = True
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'corsheaders.middleware.CorsMiddleware',
]
我得到了坏请求(400)错误:
我查看了Chrome的网络选项卡,我得到的是:
Request URL: http://localhost:8000/api/list
Request Method: GET
Status Code: 400 Bad Request
Remote Address: 127.0.0.1:8000
Referrer Policy: strict-origin-when-cross-origin
Connection: close
Content-Type: text/html
Date: Wed, 11 Aug 2021 13:05:24 GMT
Server: WSGIServer/0.2 CPython/3.8.1
X-Content-Type-Options: nosniff
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.9
Cache-Control: max-age=0
Connection: keep-alive
Host: localhost:8000
sec-ch-ua: "Chromium";v="92", " Not A;Brand";v="99", "Google Chrome";v="92"
sec-ch-ua-mobile: ?1
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: none
Sec-Fetch-User: ?1
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Mobile Safari/537.36
在React中,我得到:
Access to XMLHttpRequest at 'http://localhost:8000/api/list/' from origin 'http://localhost:3000' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
问题是什么,错误背后的原因是什么?API正在工作,我以前没有这个错误。
在这里留档https://github.com/adamchainz/django-cors-headers#setup
MIDDLEWARE = [
...,
"corsheaders.middleware.CorsMiddleware",
"django.middleware.common.CommonMiddleware",
...,
]
corsheaders.middleware.CorsMiddleware
应尽可能高,并且高于公共中间件
根据django的跨站点请求伪造保护链接,将csrf_令牌添加到您的请求中
移动到“corsheaders”。中间件。在django下的CorsMiddleware'
。contrib。会议。中间件。SessionMiddleware',
MIDDLEWARE = [
.....
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'corsheaders.middleware.CorsMiddleware',
......
]
如果您有特定的请求标头,则应在CORS\u ALLOW\u标头下写入。
CORS_ALLOW_HEADERS = (
'x-requested-with',
'content-type',
'accept',
'origin',
)
我想我会在这里问这个问题,因为我不太确定我会错在哪里。我正在尝试使用Django Rest框架类通过AJAX执行POST请求。但是,每当事件触发时,我都会收到以下错误: 这是堆栈跟踪中显示的内容: 上下文 我试图做到这一点,当用户单击“添加到列表”按钮时,它会向用户定义的列表发送一个cafeName(以及最终的其他详细信息)。 我想知道是否有人可以看看我的代码,并给我一些指导,我哪里出了问题? 代
这是我用于网络调用的函数。 接口类 收到400个错误请求。 错误日志 任何帮助都将不胜感激。
我在想我做错了什么。我收到了400个错误的请求,试图通过角服务发送一个帖子请求。我有两个实体--Document和DocumentCategory(多对多关系)。我可以张贴文件本身(没有类别)没有问题。 正如我所说,如果我删除类别,一切都可以工作。我想不通:( 编辑:当我试图将上面的json作为application/json发送时,Postman显示了这一点作为响应:
我正在尝试配置一个基于extjs作为前端和Spring作为后端的小应用程序。因此,为了从extjs与服务器通信,我们需要在存储区配置代理编写器。我的代理配置如下所示: 这是Spring控制器中的@Request estMmap: Tomcat每次回答“400错误请求”时都会使用描述“客户端发送的请求语法不正确”。 所以,但是如果我将代理类型更改为ajax并请求映射以获取POST请求,一切都可以正常
默认情况下,当凭据错误时,DRF-JWT返回400状态的响应。为什么会这样?当用户没有提供正确的登录信息时,浏览器控制台中会写入错误的请求日志。因此,我在前端处理错误,但仍然没有控制台错误消息。那么,我如何才能超越JWT,不筹集400美元,而是返回成功,正确的方法是什么?
当我添加ACDailyLine时,两个post方法的请求都变为4oo错误 为什么当我只放ACDailyH post方法时,一切正常,返回201请求。当我为AcDailyLine添加时,两者都返回400个错误请求。请帮忙,提前谢谢:) 在这里,当我调试该行时