如何启用CORS?

时间:2015-05-30 08:03:31

标签: ajax json asp.net-web-api cors

我从客户端向不同域上的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);
        }
    });
});

4 个答案:

答案 0 :(得分:1)

当我遇到Chrome问题时,此网站帮助了我,显示以下错误:“请求的资源上没有'Access-Control-Allow-Origin'标头”

转到标题为“启用CORS”的部分。

https://docs.microsoft.com/en-us/aspnet/web-api/overview/security/enabling-cross-origin-requests-in-web-api

注意,我使用了以下属性语法,而不是上面站点中列出的内容:

        [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 标头。

CORS jQuery AJAX request

答案 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();

});

我希望您至少会明白。