首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >fetch-api请求失败(GET和POST)。我好迷茫

fetch-api请求失败(GET和POST)。我好迷茫
EN

Stack Overflow用户
提问于 2022-06-22 21:42:34
回答 1查看 344关注 0票数 5

我为20+年写了钱的代码,但我没有理由问这个问题。

天哪,我在谷歌上查过了。我知道这里有许多半相同的问题,我想我已经阅读了所有的回答,并尝试了所有的模式建议。许多问题并没有得到很好的阐述,我的观点似乎有点自相矛盾(所有的部分都是孤立的)。请容忍我,我会尽力的。

前部使用svelte-试剂盒,背面使用fastapi。

首先,下面是我的"Buttons.svelte“组件,它是逐字复制的。

代码语言:javascript
复制
<script lang="javascript">

    async function worksJustFine() {
        fetch("https://jsonplaceholder.typicode.com/todos")
            .then(response => {
                console.log(" response", response)
                console.log(" r.json() >", response.clone().json())
                response.json()
                    .then(json => {
                        console.log("json", json)
                    })
                    .catch(error => console.log(error))
            })
    }


    async function doesNotWork() {
        fetch(`http://localhost:8000/api/test_url?test_param=1`)
            .then(response => {
                console.log(" response", response)
                console.log(" r.json() >", response.clone().json())
                response.json()
                    .then(json => {
                        console.log("json", json)
                    })
                    .catch(error => console.log(error))
            })
    }
</script>

<buttons>
    <button class="btn btn-outline-primary btn-lg" on:click={worksJustFine}>OK</button>
    <button class="btn btn-outline-primary btn-lg" on:click={doesNotWork}>NOT OK</button>
</buttons>

<style lang="scss">
</style>

第二,以下是路线/视图:

代码语言:javascript
复制
@router.get("/api/test_url")
async def test_url(test_param: str):
    try:
        print(f"test_param: {test_param}")
        return {"success": True, "message": "Message", "hooray": True}
    except Exception as e:
        print(repr(e))
        return {"success": False, "message": repr(e), "": True}

问题表现如下:

  • "NOT“按钮启动一个永不返回的请求,网络面板只显示标准pebkac”(待定)“请求,似乎永远如此。这对于Chrome和Chrome来说是正确的,尽管上面提到的请求都是从Firefox (最新版和开发版)获得的。
  • fastAPI URL可以从卷曲、失眠和新选项卡中的浏览器直接请求(使用铬稳定、铬和火狐)完美地工作。
  • 如果我使用POST请求(这是我的目标),那么它在任何浏览器上都不起作用。待决,永远。然而,当从卷发、邮递员等处被解雇时,这条柱子确实工作得很好。
  • 有时我点击它,然后走开。很少,经过一段未指定的时间(半小时,小时?)我回来了--发现它确实起了作用--请求通过了,副作用很明显。我认为,在三天的斗争中,总共发生了两次。
  • 这不是CORS。如果我禁用下面的代码,它将成为CORS问题,但使用此代码似乎很清楚。此外,正如上面所述,它的工作良好,从FF,谁大概也尊重CORS。
代码语言:javascript
复制
app = FastAPI()
app.add_middleware(CORSMiddleware,
                   allow_origins=["http://localhost:3000"],
                   allow_credentials=True,
                   allow_methods=["*"],
                   allow_headers=["*"])
app.include_router(router)
  • 我的浏览器中没有安装任何加载项或限制程序。在我的主浏览器(qtwebengine/qutebrowser)中,我有一个用于快速转发youtube广告的greasemonkey脚本和几个用户css文件。
  • 在我读过的帖子和文章中,有一个共同点是,根据调试工具面板是否打开,情况可能有所不同。就我的情况而言,这对情况根本没有任何影响。
  • 一切都在本地主机上运行-没有VM,没有容器.只有我和本地人。
  1. 由于worksJustFine工作正常,它似乎不是一个svelte/javascript问题。
  2. 由于test_url工作良好(作为POST或GET)来自除fetch API以外的每个源,所以它似乎不是fastAPI问题。

我遗漏了什么?我还能提供什么更多的信息?

铬请求(待决)

失眠请求,快速表尚未重新启动,铬请求仍在等待中

EN

回答 1

Stack Overflow用户

发布于 2022-06-25 16:10:43

感谢您抽出时间在这里阅读和评论。我已经克服了这个问题,尽管我并没有被清除掉残存的混乱。

  • 我不知道SSE连接是有限制的--这是很难的--在Chromium中限制在6 (firefox也声称是这样的,并且两者都被标记为wontfix)。
  • 对于不同的流数据点,我正好使用了6个SSE连接。
  • 我禁用了所有SSE端点,GET/POST完全正常工作。然后,我增量地重新启用了所有的,SSE端点.
  • 现在,当我问我上面的问题时,这个系统和它的状态完全没有变化!但是,GET请求来自Chrome和Chrome,POST请求可以在所有浏览器上工作。

我理解错误的来源,我把SSE指定为“一看到就用websockets代替的垃圾”。

再次感谢你抽出时间和我谈谈。

“我希望我能拥抱你们.但我不会”

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72722315

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档