[axios]Axios 仅适用于跨站点请求使用“GET”方法

2024-02-21 871 views
5

我知道有很多关于相同主题或标题的问题,但确实存在一个错误。

问题是我有一个项目,我使用 jQuery ajax 作为我的 http 客户端,一切都开箱即用。

我已经使用 axios有一段时间了,我真的很想把 jQuery 作为我的 http 客户端。

当使用“PUT”、“POST”和“PATCH”方法时,Axios根本无法执行跨站点请求。

我已经深入研究了这个问题,并且我的结果测试了所有请求方法。

我为方法'PUT''POST''PATCH'设置了属性 data: { data } ,并且数据永远不会被发送

我设置了属性 params: { data } 并使用“GET”方法对此进行了测试,并且发送了数据

我一直在测试允许跨源请求的服务器,并使用上面提到的所有方法与 jquery ajax 一起工作。

axios仅适用于跨站点请求使用“GET”方法。

请帮助我或解决这个问题。我真的很想使用 axios 作为我的 http 客户端。

提前致谢!

回答

9
this.$axios({
                method: 'post',
                url: '/usersaccount/login',
                data: this.form.model
            }).then(response => {
                this.form.isSaving = false
                this.validateLogin(response);
            }).catch(response => {
                this.form.isSaving = false
                this.$root.$snackbar(this.$i18n.t("components.login.form.unknownError"), { color: 'error' })
            })

我在此代码上使用 vuejs 和 axios。$axios 是 vuejs 上下文中的扩展属性。

5

跨站点与跨源的含义是否不同?

8

如果您能提供一个 jsfiddle 或重现该问题的东西,那就太好了。

4

我可以分享一些有关代码和请求的图片吗?

2

我无法提供 jsfiddle 因为服务器位于 Intranet 上。从外面看是不可抗拒的。

1

这可能会有所帮助,但最可操作的错误报告将是您找到一个独立于您的项目的示例,该示例说明了 axios 中的不良行为。

我创建了这个小提琴,它似乎显示了一个跨源 POST,数据发送正确。httpbin 只是回显请求正文。也许您可以将此代码中的条件与您必须尝试的条件进行比较,并缩小导致错误的原因。 https://jsfiddle.net/n2eoa3ct/11/

4

我在服务器端编辑了一些标头并使其正常工作。不知道为什么 jQuery 可以开箱即用,无需设置一些额外的标头。但至少我可以确认这个问题已经为我解决了。感谢@RikkiGibson 和@OpenGG。愿上帝保佑我们大家!!!