【问题标题】:How to set CORS headers to a client如何为客户端设置 CORS 标头
【发布时间】:2020-06-01 20:45:35
【问题描述】:

我正在使用这个客户端

var client = new forcetk.Client();

提出请求。我正在尝试传递另一个 URL,但是

已被 CORS 政策阻止:请求的资源上不存在“Access-Control-Allow-Origin”标头。

出现错误。我可以为客户端设置任何标题吗?有没有办法在 XMLHttpRequest 调用中发出我的客户请求?任何帮助将非常感激。提前致谢。

这是我过于简化的代码

> forcetk.Client.prototype.createBlob = function (objtype, fields,
> filename, payloadField, payload, callback, error, retry) {
> 'use strict';
>         let res = this.blob('/' + this.apiVersion + '/sobjects/' + objtype + '/',
>                          fields, filename, payloadField, payload, callback, error, retry);
>         res.header("Access-Control-Allow-Origin", "*");
>         return res;
>     };

【问题讨论】:

  • 您能否编辑您的问题以共享您用于发出请求的代码?包括您请求资源表单的 URL 以及您用于后端的框架会很有帮助。
  • @JPG 这听起来像是您的 API 的服务器问题。如果您尝试在本地进行测试,则需要在您的服务器上启用 CORS 以允许在您指定的域之外发送。示例:我有一个只能从我的域调用我的 API 的网站,启用 CORS 时我可以从任何域调用它,包括本地主机。它将发送一个预检请求,如果调用一个函数,它将触发您的代码两次,一次使用空白值,请记住这一点。

标签: javascript reactjs request cors salesforce


【解决方案1】:

为了进行本地测试,您必须在服务器上启用 CORS,并将以下标头添加到来自服务器而不是客户端的响应中:

'Access-Control-Allow-Origin': '*'

生产设置将禁用 CORS,响应的标头如下所示:

'Access-Control-Allow-Origin': 'https://www.google.com'

将 Access-Control-Allow-Origin 设置为特定域并禁用 CORS 使得没有人可以在您的域之外调用您的 API,从而给您当前遇到的错误。

这是来自服务器的 JavaScript 响应示例

var response = {
 "isBase64Encoded": false,
 "headers": { 'Content-Type': 'application/json', 'Access-Control-Allow-Origin': '*'},
 "statusCode": 200,
 "body": "{\"result\": \"Success.\"}"
 };

例如,当 CORS 启用并且您从 localhost 调用服务器时,它将发送预检请求 https://developer.mozilla.org/en-US/docs/Glossary/Preflight_request。在过去,由于我没有意识到,这已经触发了对我的重复代码调用。就像在服务器端代码中检查空参数值一样简单。

【讨论】:

  • 我添加了您在下面指出的标题。它需要是 XMLHttpRequest 吗?
  • @JPG XMLHttpRequest 可用于客户端代码调用服务器并检索数据。您面临的问题是服务器响应不正确的标头,因为它没有配置为跨域使用 CORS,并且我解释的原始策略可能未实现。有像 postman.com 这样的工具来测试端点并查看从服务器返回的标头。
【解决方案2】:

CORS 标头应从后端发送。查看更多信息here。 您的请求来自的域应该在白名单中(在响应中)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-19
    相关资源
    最近更新 更多