1

好的,我使用 REST 控制台(Chrome 扩展)来测试一个 REST API。这些请求可与 REST 控制台一起使用,但在 javascript AJAX 中执行相同操作会失败,并且 Access-Control-Allow-Origin 不允许使用 Origin localhost:8000。

服务器设置为允许 *,我可以在 REST 控制台的响应标头中看到这一点。但是在 javascript 中执行 ajax 请求时查看我的响应标头,我发现这些标头不存在。

两者有什么区别?

这是我的简单 AJAX 请求(coffeescript)

$.ajax
    type: requestType
    contentType: "application/json"
    url: url
    data: data_string
    success: (r) =>
        successCallback(r)
    error: (r) =>
        errorCallback(r)

这在本地网络中的办公室有效,现在在 VPN 上无效。但是 REST 控制台总是有效的??

4

1 回答 1

3

application/jsonContent-Type:在简单的 CORS 请求中是不允许的。

它必须进行预检,并且服务器端设置要复杂一些。

如果合适,请尝试取消设置 contentType 或使用其中一种:

  • 应用程序/x-www-form-urlencoded
  • 多部分/表单数据
  • 文本/纯文本

也可以在这里查看我之前的回答

和一个相关的问题:

jQuery CORS 内容类型选项

于 2013-08-20T08:26:31.020 回答