作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用这个客户端
var client = new forcetk.Client();
提出请求。我正在尝试传递另一个 URL,但是
has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
出现错误。我可以为客户端设置任何 header 吗?有没有办法在 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;
> };
最佳答案
要进行本地测试,您必须在服务器上启用 CORS,并将以下 header 添加到来自服务器而不是客户端的响应中:
'Access-Control-Allow-Origin': '*'
生产设置将禁用 CORS,响应 header 如下所示:
'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 并且您从本地主机调用服务器时,它将发送预检请求 https://developer.mozilla.org/en-US/docs/Glossary/Preflight_request 。过去,由于我不了解这一点,这已经触发了对我的重复代码调用。就像在服务器端代码上检查空参数值一样简单。
关于javascript - 如何向客户端设置 CORS header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60270574/
我是一名优秀的程序员,十分优秀!