- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 Axios 向用 Python bottle 编码的后端发出发布请求。
问题是当请求被触发时,我得到一个 500 internal
。
首先,这里是axios请求代码:
const data = {date: formatDate(date), titles}
post(`${API_URL}/save_day_titles`, data)
.then(res => {
console.log('response success', {...res});
})
.catch(res => {
console.log('response', {...res});
});
Bottle 代码:
@planApi.route('/api/v3.6/save_day_titles', method=['POST', 'OPTIONS'])
def plan_save():
date = request.json['date']
titles = request.json['titles']
plan = {
'date': datetime.datetime.strptime(date, '%Y-%m-%d'),
'titles': titles
}
id = titlesMongo.insert_one(plan).inserted_id
return {"id": str(id), "plan_date": date, "planification": titles}
Web 控制台中记录的错误简单明了:
OPTIONS xxx/api/v3.6/save_day_titles 500 (Internal Server Error)
XMLHttpRequest cannot load xxx/api/v3.6/save_day_titles. Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:3000' is therefore not allowed access. The response had HTTP status code 500.
它看起来像一个 CORS,但我正在发出很多其他请求(获取请求)并且没有 CORS 错误......无论如何,当我尝试在服务器中记录主体时,如:print request .body.parse()
日志是:
127.0.0.1 - - [17/Aug/2017 18:18:45] “POST /api/v3.6/save_day_titles HTTP/1.0” 500 765
b’'
奇怪的是,使用 CURL 请求是成功的:
curl -H "Content-Type: application/json" -X POST -d '{ "date": "2017-08-15", "titles": [{"title": "title test", "url":"xxx/xxx", "category": "category test"}] }' "xxx/api/v3.6/save_day_titles".
Axios 配置似乎没问题:
date: "{"date":"2017-08-01","titles":[{"title":"title test","url":"xxx/xxx","category":"category test"}]}"
headers:
Accept: "application/json, text/plain, */*"
Content-Type: "application/json;charset=utf-8"
所以,我只是被困在这里,无法找出问题所在,有什么想法吗?提示?
提前致谢。
最佳答案
您的浏览器正在执行 CORS preflight OPTIONS
request ,但是当您的服务器收到该请求时发生了一些内部故障,因此服务器会对该请求返回 500 错误响应。
当服务器发生内部故障并发送 500 错误响应时,服务器不会添加 Access-Control-Allow-Origin
响应 header ,因此您最终会看到 CORS 错误消息。
所以真正的问题不是 CORS 错误,而是服务器中的一些内部问题——正因为如此,要找到解决方案,您需要查看服务器端的服务器日志,看看消息是什么当 500 错误发生时,服务器正在记录原因。
The weird thing is, with CURL the request is succesful:
curl -H "Content-Type: application/json" -X POST \-d '{ "date": "2017-08-15", "titles": [{"title": "title test", "url":"xxx/xxx", "category": "category test"}] }' "xxx/api/v3.6/save_day_titles".
这是在测试一个 POST
请求。您的浏览器永远不会执行 POST
;相反,它首先执行 CORS preflight OPTIONS
request ,但是当它收到对 OPTIONS
请求的 500
错误响应时,这是预检失败,因此浏览器永远不会继续执行 POST
.
因此,要使用 curl
模拟浏览器行为,您首先需要发送一个 OPTIONS
请求:
curl -X OPTIONS -i -H 'Origin: http://localhost:3000' \
-H 'Access-Control-Request-Method: POST' \
-H 'Access-Control-Request-Headers: Content-Type' \
xxx/api/v3.6/save_day_titles
这应该会让服务器返回您在浏览器中看到的相同的 500 错误响应。
请注意浏览器这样做的原因 CORS preflight OPTIONS
request是因为您的前端 JavaScript 代码正在添加 Content-Type: application/json
请求 header ,这是触发浏览器进行预检的条件之一。
关于javascript - Bottle 不识别 Axios.js json post,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45743051/
我正在开发一个基于 Python 的应用程序(HTTP -- REST 或 jsonrpc 接口(interface)),它将用于生产自动化测试环境。这将连接到运行所有测试脚本的 Java 客户端。即
我正在关注Recipes的bottle框架。 当我尝试下面的代码时 #filename: mywebapp.py from bottle import Bottle, run, request app
我通常使用method version处理 Bottle 中的路由 bottle.route("/charge", "GET", self.charge) bottle 文档严重依赖 @route 装
如何在 Bottle 框架中执行基本身份验证?在 flask 中我曾经: def check( username, password ): # This function is called
是否可以在同一应用程序(同一端口)中托管一个普通 Bottle 应用程序和一个 WebSocket 应用程序(例如: https://github.com/defnull/bottle/blob/ma
我有使用 python 2.7.2、bottle 0.10.9 和“瑞士军刀” scrapy 0.14.1 编写的简单 REST API。 简单来说,只有一种方法 (myserver:8081/dop
嗨,有没有办法优雅地关闭 Bottle 服务器。在某种程度上,它应该能够在最终停止之前执行几个步骤。这对于线程和数据库状态等的一些清理至关重要,以避免重新启动期间的损坏状态。 我正在使用 mod ws
我正在尝试让服务器发送事件在Python中工作,所以我找到了一些演示代码,令我惊讶的是,它只部分工作,我不明白为什么。我从here获取代码并进行了一些小的更改,这样我就可以看到什么在起作用(我包括了一
有没有办法让我的网站可以通过我所连接的网络访问? from bottle import route, run, template @route('/hello/') def index(name):
如果我直接从 Bottle 导入 post、get 和 jinja2_view,我就可以使用 jinja2_view 作为装饰器: from bottle import get, post, requ
我正在尝试将 Bottle.py 作为脚本内的进程运行,但我很沮丧,因为它没有按我的预期工作。这是我的脚本的假设/简化表示。我尝试添加尽可能多的评论。 magball.py import serial
(免责声明:我正在发现 python) 使用以下代码: @route('/test', method='POST') def index_view(): image = request.fil
我有一个 Bottle 服务器在端口 8080 上运行,使用“gevent”服务器。我使用这个服务器来支持一些简单的“服务器发送事件”。 我的问题可能与不知道我的设置是如何工作有关。我希望有人能花时间
我最近接触了 Bottlepy,这几乎是我第一次使用模板引擎。(之前我会简单地用传统 PHP 制作我需要的东西) 我的问题是这样的,假设我有一个基本布局(一个简单的 HTML/CSS 布局),并且,例
我如何管理 Bottle 中的多个应用程序,一次运行? 应用 0 from bottle import Bottle app0 = Bottle() @app0.route('/app0/') def
我将 bottle 用于一个显示日历并允许用户指定年份和月份的简单应用。定义了以下路由: '/' # 当前年份和当前月份 '/year' #年和当月 '/year/month' #年月 但是,无法识别
我正在使用 Bottle 框架。我已经设置了 @error 装饰器,所以我能够显示我自定义的错误页面,如果发生任何 500 错误我也可以发送电子邮件,但我需要在电子邮件中发送完整的回溯。有谁知道如何将
我有这样的目录结构: . ├── controller │ ├── FooController.py │ ├── __init__.py │ ├── main.py FooController
我在 bottle 中使用 html,在“index.html”中我导入外部 JS 和 CSS。 但是加载页面时,找不到css和js。 我的项目结构: testBottle.py 中的代码: impo
嗨,我是 python 和 bottle 的新手 我有一个网站 这是结构 |root index.py |classes session.py 如何从 index.py 访问
我是一名优秀的程序员,十分优秀!