当发布一个html编码的文本到服务器时,服务器端代码在dev环境下工作正常,但是当我在netlify服务器上发布它时,同样的请求返回一个500错误,并且服务器端请求日志中间件只检测到一个没有主体的发布请求。
服务器/API/handlePost.post.ts
export default defineEventHandler(async (event) => {
const { rawLog } = getQuery(event);
if (rawLog != null) {
const myRawLog = JSON.parse(rawLog as string) as rawLogArticle;
//post it to the server...
return { statusCode: 200, statusMessage: "Success" };
} else {
return { statusCode: 500, statusMessage: "SERVER ISSUE" };
}
页面/post/write.vue
<script setup lang="ts">
if (body.length > 0 && _title.length > 0) {
const { data: response } = await useFetch('/api/handlePost', {
method: "post",
query: {
rawLog: JSON.stringify(newLogContent)
}
})
if (response.value?.statusCode == 200) {
await navigateTo("/")
} else {
console.error("something went wrong")
}
</script>
我使用tinyMCE文本编辑器的html内容作为文章主体,如果文章主体包含任何double enter
或space at the end of a sentence
,那么服务器会抛出500错误,但是chrome网络标签显示发送的请求确实包含文章主体。
从请求正文中手动删除npsb;
字符可以完成请求,不会出现任何问题。
1条答案
按热度按时间e0uiprwp1#
处理它的一个非常简单的方法是在服务器端返回中使用
encodeURIComponent