跨源请求被阻止 使用 javascript 向 API 发送帖子时出错

Cross-Origin Request Blocked error on sending post to an api using javascript

本文关键字:API 出错 javascript 请求 使用      更新时间:2023-09-26

嗨,我有一个这样的 https://rdkportal.ccp.xcal.tv/build_images/cdl 向它发送帖子请求,我将能够以 JSON 格式获取一些信息作为响应。这是使用 linux 发送它的格式

curl -u username:password https://rdkportal.ccp.xcal.tv/build_images/cdl -H "Content-Type: application/json" -H "Accept: application/json"  -X POST -d '{"image_name": "MX011AN_VBN_master_20160118234003sdy_NG", "recipients_list": "some_user@.com", "cdl": "PROD", "type": "tftp", "stb": { "ip4_address": "0.0.0.0", "ip6_address": "2001:558:4030:2:96d4:feff:fe7c:7500", "mac_address": "", "serial_number": "" }}'

我成功地发送了 POST 请求并通过在 linux 机器中执行上述 curl 命令来接收响应。

我正在尝试使用 ajax 在 javascript 中做类似的事情,但我收到以下错误。

跨源请求被阻止:同源策略不允许在 https://rdkportal.ccp.xcal.tv/build_images/cdl 读取远程资源。(原因:缺少 CORS 标头"访问控制-允许源")。

这是我的代码

$.ajax({
        type: 'POST',
        url: 'https://rdkportal.ccp.xcal.tv/build_images/cdl',
        crossDomain: true,
        data: '{"some":"json"}',
        dataType: 'json',
        xhrFields: {
            withCredentials: true
        },
        success: function(responseData, textStatus, jqXHR) {
            var value = responseData.someKey;
            alert('POST success');
        },
        error: function (responseData, textStatus, errorThrown) {
            alert('POST failed.');
        }
    });

我也不知道如何在 ajax 中发送带有请求的凭据。请帮忙,我在这里被击中了。提前谢谢。

您可以通过 3 种方式实现这些目标:

1)如果服务器端代码不在您的控制范围内,您可以安装chrome插件,这意味着你们没有处理它。

链接:

https://chrome.google.com/webstore/detail/allow-control-allow-origi/nlfbmbojpeacfghkpbjhddihlkkiljbi?utm_source=chrome-ntp-icon

2). 您可以创建代理服务器并使用这些新的 URL/API 进行通信。

3). 第三个也是最后一个也是最好的是允许访问控制允许来源:* 到 *(用于授予对来自任何域的所有 URL 的访问权限),或访问控制允许来源:"如果您的系统IP,如果在本地运行,则主机名"(用于仅授予对该特定主机的访问权限)

您需要添加标头以允许来自其他地方的请求进入终端节点。

"访问控制允许来源:*"

这会将标头与可以向此终结点发出请求的授权域一起发送(* 表示全部)。

CORS 希望知道您是否有权在该服务器上发出请求,因此在标头上发送请求可以解决此问题。

如何在标头上添加它取决于您使用的语言(节点php ruby java)。

如果您详细说明后端,我可以为您提供帮助。

您需要将以下标头添加到请求中:

Access-Control-Allow-Origin: *

Access-Control-Allow-Origin: root-url-here.com

最重要的是,服务器需要在响应中以相同的 URL(例如 root-url-here.com)发送回此标头。

如果您不是服务器端的开发人员,则应要求他们将您的请求 URL 添加到已接受的请求源列表中。