【问题标题】:OPTIONS net::ERR_EMPTY_RESPONSE AngularJs Post call选项 net::ERR_EMPTY_RESPONSE AngularJs Post call
【发布时间】:2016-04-30 01:13:54
【问题描述】:

这是我的请求标头

Request URL:http://demo7876167.mockable.io/auth/login
Request Headers
Provisional headers are shown
Access-Control-Request-Headers:accept, content-type
Access-Control-Request-Method:POST
Origin:http://localhost:8000
Referer:http://localhost:8000/
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36
X-DevTools-Emulate-Network-Conditions-Client-Id:CACC0804-7333-424B-985E-DBA8164A45E1

这是控制台上出现的确切错误

OPTIONS http://demo7876167.mockable.io/auth/login net::ERR_EMPTY_RESPONSE

当我尝试通过邮递员访问相同的 URL 时,它似乎可以工作。 每当我尝试访问不同的服务器时都会发生这种情况。

有什么特殊的方法可以在 angularJs 中进行调用,以便我可以将请求发布到任何启用了 CORS 的服务器

【问题讨论】:

  • “当我尝试通过邮递员访问相同的 URL 时,它似乎可以工作。” — 你真的在向邮递员提出 OPTIONS 请求吗?
  • @Quentin 抱歉,我的意思是我正在通过邮递员尝试的邮递电话

标签: javascript angularjs http-headers xmlhttprequest


【解决方案1】:

浏览器在发出您期望它发出的 POST 请求之前发出preflight OPTIONS request。 (大概是您使用 Postman 测试的 POST 请求)。

如果您没有发出simple request,则需要预检请求。默认情况下,Angular 会将 POST 请求中的数据编码为 JSON(而不是更常见的 URL 表单编码)。 JSON 不是简单请求可接受的内容类型之一。

您发出请求的服务器必须响应 OPTIONS 请求,告诉浏览器允许您的 JavaScript 发出您尝试发出的 JSON 编码 POST 请求。

浏览器收到权限后,会发出你正在用 Postman 模拟的 POST 请求。

或者,make a form encoded POST 而不是 JSON 编码的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-11-11
    • 2018-11-06
    • 1970-01-01
    • 1970-01-01
    • 2020-02-26
    • 2019-04-08
    • 2022-12-11
    • 2019-10-12
    相关资源
    最近更新 更多