我正在向后端服务器发布帖子,该服务器是一个 openid 身份验证库。当我有一个简单的表单,它的动作指向服务器 url 时,它就可以工作。
但是,当我使用 $http.post 方法时它失败了。我已经比较了标头并将内容类型更改为 url-form 编码。这解决了部分问题,但来自服务器的重定向仍然失败。
关于导致这种行为的常规形式 post 和 angular 的 $http.post 之间有什么区别的任何想法?
我正在向后端服务器发布帖子,该服务器是一个 openid 身份验证库。当我有一个简单的表单,它的动作指向服务器 url 时,它就可以工作。
但是,当我使用 $http.post 方法时它失败了。我已经比较了标头并将内容类型更改为 url-form 编码。这解决了部分问题,但来自服务器的重定向仍然失败。
关于导致这种行为的常规形式 post 和 angular 的 $http.post 之间有什么区别的任何想法?
但来自服务器的重定向仍然失败。
服务器重定向不应该返回到前端,因为 ajax 请求会给你它到达的最终页面的 http 状态代码。因此,如果您通过 ajax 请求的页面正在重定向到另一个页面,它将为您提供 200 状态。您可以阅读此http://www.w3.org/TR/XMLHttpRequest/#infrastructure-for-the-send-method的 w3c 草案。
如果您真的想看到差异,我建议您设置一个免费工具,例如Fiddler。然后,您可以在请求离开和/或到达时查看请求,并查看每个差异。
但是,理论上,只有您在表单标签或 $http.post 调用中设置的任何差异。我假设他们都在使用 POST。一个可能使用与另一个不同的内容类型(表单标签上的 enctype)......比如“multipart/form-data”或“application/x-www-form-urlencoded”与“application/json”。 ..这是一个关键部分,它告诉服务器您正在发送什么类型的数据。如果服务器期待一种类型并获得另一种类型,那可能是您失败的原因。
但是,如果没有看到您的代码,很难说。