emberJS JSONAPI适配器发送OPTION而不是GET请求

时间:2016-04-08 17:58:33

标签: javascript ember.js ember-data json-api get-request

我正在尝试向emberJS应用程序中的工作服务器(通过google POSTMAN检查)发出基本请求。但是当我尝试它时,我得到了http 404错误。然后我检查了错误,发现来自客户端的原始请求来自OPTION请求而不是GET请求。另外,我已将两个标题AcceptContent-Type设置为application/json,在检查时,检查员打印了这些标题:

Accept:*/*
Accept-Encoding:gzip, deflate, sdch
Accept-Language:en-US,en;q=0.8
Access-Control-Request-Headers:accept, content-type
Access-Control-Request-Method:GET
Connection:keep-alive
Host:frontend.com
Origin:http://localhost:4200
Referer:http://localhost:4200/restaurant
User-Agent:Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.110 Safari/537.36

现在这里是适配器

//Application.js adapter:
import DS from 'ember-data';

export default DS.JSONAPIadapter.extend({
    host: 'http://server.com',
    namespace: 'v1',
    headers: {
      "Accept": "application/json",
      "Content-Type": "application/json"
    }
});

是否有某种方法可以关闭此OPTION,还是有一些解决方法?我不相信ember是如此的错误,因为这些应该是emberJS应该做的主要事情之一 - 发送请求。 任何帮助都是适用的。

1 个答案:

答案 0 :(得分:1)

这是“请求预检”。在执行跨源请求时,浏览器首先通过发送OPTION请求来发送预检请求。如果OPTION请求成功响应,则实际请求将发送到服务器。

在这种情况下,“预检”失败:

  • 服务器未启用CORS
  • 发生身份验证/授权问题
  • 找不到服务功能(404)
  • 服务功能不接受您要发送的标题

您可以使用以下关键字进行搜索:preflight, cors