Curl CORS在带有选项的请求时失败(状态为0的响应)
更新:由于我得到了一些新的信息,请重写问题。历史记录在编辑中可见 发行介绍Curl CORS在带有选项的请求时失败(状态为0的响应),curl,cors,django-rest-framework,django-cors-headers,Curl,Cors,Django Rest Framework,Django Cors Headers,更新:由于我得到了一些新的信息,请重写问题。历史记录在编辑中可见 发行介绍 我有一个运行在子域api.nrzonline.nl上的django rest framework应用程序。前端ng2+webpack应用程序正在域本身nrzonline.nl上运行。当使用ng2 restangular向API发送请求时,我在控制台中收到以下错误: zone.js OPTIONS http://api.nrzonline.com/project/ net::ERR_EMPTY_RESPONSE EXC
我有一个运行在子域
api.nrzonline.nl
上的django rest framework
应用程序。前端ng2+webpack
应用程序正在域本身nrzonline.nl
上运行。当使用ng2 restangular
向API发送请求时,我在控制台中收到以下错误:
zone.js OPTIONS http://api.nrzonline.com/project/ net::ERR_EMPTY_RESPONSE
EXCEPTION: Response with status: 0 for URL: null
当前问题经过相当多的curls测试后,我发现当发送带有
选项的飞行前请求时,所有请求都失败了
带有-X GET
的请求正常工作:
curl 'api.nrzonline.nl/skill/' -X GET
[{"id":1,"category":{"id":1,"title":"skill-a",...}]
(飞行前)带有-X选项的请求失败,没有响应
curl 'api.nrzonline.nl/skill/' -X OPTIONS
curl: (52) Empty reply from server
在Django开发服务器上的API上本地执行此-x OPTIONS
请求不会出现任何问题
服务器设置
CORS\u ORIGIN\u ALLOW\u ALL=True
CORS\u ALLOW\u METHODS
为默认设置,允许选项
CORS\u ALLOW\u头文件处于默认状态
中间件:
MIDDLEWARE = [
...
'corsheaders.middleware.CorsMiddleware',
'django.middleware.common.CommonMiddleware',
...
]
我尝试过的
- 我已经了解到,服务器可能需要HTTPS请求,但目前没有活动的SSL证书。()尽管如此,我还是试着用
--不安全的卷曲()
- 使用
-H“内容类型:text/plain”
()
问题
我遗漏了什么/做错了什么,因此带-X选项的飞行前操作失败了。欢迎提供任何可能的解决方案的提示、解释或参考。答案积分归我的兄弟,我网站的主持人
这个问题是相关的。默认情况下,DirectAdmin只允许GET
、POST
和HEAD
这些设置位于include/etc/nginx/webapps.conf代码>作为:
if ($request_method !~ ^(GET|HEAD|POST)$ ) {
return 444;
}
添加选项应该可以解决问题。删除或注释掉代码块以允许任何请求方法
但是,修改/etc/nginx/webapps.conf
可能会导致DirectAdmin在新的HTTPD更新期间重写此文件。文件/custombuild/costum/nginx/conf
用于生成conf
文件。在此处进行修改可以防止丢失调整