嗨我有一个这样的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标题' Access-Control-Allow-Origin'缺失)。
这是我的代码
$.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中使用请求发送凭据。请帮助我在这里受到打击。提前谢谢。
答案 0 :(得分:1)
你可以通过三种方式实现这些目标:
1)如果服务器端代码不在您的控制范围内,您可以安装chrome插件意味着您没有处理它。
链接:
2)。您可以创建代理服务器并使用这些新的URL / api进行通信。
3)。第三个也是最后一个也是最好的是允许Access-Control-Allow-Origin:*为*(用于访问来自任何域的所有URL)或Access-Control-Allow-Origin:'你的系统ip如果在本地运行其他hostname'(仅用于访问该特定主机)
答案 1 :(得分:0)
您需要添加标头以允许来自其他位置的请求进入端点。
“Access-Control-Allow-Origin:*”
这会向可以向此端点发出请求的授权域发送标头,(*表示全部)。
CORS希望知道您是否有权在该服务器上发出请求,因此在标头上发送请求可以解决该问题。
如何在标题上添加此项取决于您使用的语言(node php ruby java)。
如果你详细说明后端,我可以帮助你。
答案 2 :(得分:0)
您需要在请求中添加以下标头:
item_id
或
order_items
但最重要的是,服务器需要在具有相同URL的响应中发回此标头(例如root-url-here.com)。
如果您不是服务器端的开发人员,则应要求他们将您的请求URL添加到已接受的请求来源列表中。