我从客户端向不同域上的Web-API发出请求以提取JSON格式的数据。如何启用跨源资源共享(CORS)? 当我的web-API在http。
上运行时,客户端在https上运行这是我正在制作的AJAX电话:
$(document).ready(function () {
$.ajax({
type: "GET",
url: "http://map.techriff.in/api/values",
success: function (json) {
console.log(json);
},
error: function (err) {
console.log(err);
}
});
});
答案 0 :(得分:1)
当我遇到Chrome问题时,此网站帮助了我,显示以下错误:“请求的资源上没有'Access-Control-Allow-Origin'标头”
转到标题为“启用CORS”的部分。
注意,我使用了以下属性语法,而不是上面站点中列出的内容:
[EnableCors("http://localhost:1616", "*", "*")]
答案 1 :(得分:0)
您需要将Access-Control-Allow-Origin: http://domain.com
添加到您的回复标题中,其中 domain.com 将替换为您要允许的域名(不要使用*通配符)。< / p>
如何执行此操作取决于您的服务器堆栈。在ASP.NET中:
Response.AppendHeader("Access-Control-Allow-Origin", "http://domain.com");
然后,您需要在jQuery中设置$.support.cors = true
以在客户端上启用它。
答案 2 :(得分:0)
在之前添加$.support.cors = true;
以进行$ .ajax调用。
来源:Is it safe to use $.support.cors = true; in jQuery?
假设您在服务器上也正确设置了 Access-Control-Allow-Origin 标头。
答案 3 :(得分:0)
首先,这是一个大问题。每个人都会说您必须在服务器中启用CORS。如果我们要求一个API怎么办?我所做的是。
第1步:对我自己的服务器进行ajax调用。 第2步:从我的服务器向API发出https请求。 步骤3:将结果发送到Ajax。
我的AJAX通话。
$.ajax({
type: "POST",
url: "makepay",
data:{
key:value
},
success: function(response) {
//place to handle the response
},
error: function() {
//place to handle the error
}
});
我的服务器页面
const https = require('https');
app.post('/makepay',function(req, res){
var options = {
host: "Site address",
path: "Path",
method: "POST",
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
}
var req = https.request(options, (resp) => {
resp.on('data', (xmlresponse) => {
res.send(xmlresponse);
}}
req.write(parameters_to_the_API);
req.end();
});
我希望您至少会明白。