当前位置: 首页 > 知识库问答 >
问题:

如何允许ASP的CORS。网

惠志
2023-03-14

我试图从JS/Ajax向我的WebAPI发出请求时遇到了问题。在我的解决方案中,我有一个发布在srv02:2400上的Web API,我的网站发布在srv02:2300上

当我导航到页面时http://srv02:2300/all-请求。aspx,页面加载正常,除了应该来自我的API的数据

我得到了一个错误:

XMLHttpRequest cannot load http://srv02:2400/api/requests/find/1. Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://srv02:2300' is therefore not allowed access. The response had HTTP status code 400.

但是,如果我把url超文本传输协议://srv02:2400/api/请求/查找/1粘贴在浏览器中,它会给我正确的JSON列表!。

我试图通过以下方式在全球范围内启用CORS,正如API中所建议的那样:

>

  • 安装Microsoft软件包。AspNet.WebApi.Cors
  • 通过添加以下内容更新我的WebApiConfig.cs:

    var cors=新的EnableCorsAttribute(“http://srv02:2400“,”,”;config.EnableCors(cors);

    然而,这并没有起作用。

    正如我前面提到的,我正在按照Ajax的要求执行我的请求

    $.ajax({
            url: "http://srv02:2400/api/requests/find/" + id,
            type: "GET",
            dataType: 'json',
            contentType: 'application/json',
            success: function (requests) {
                 console.log('success');
            },
            error: function (err) {
                if (err) {
                    console.log(err);
                }
            }
        });
    

    我尝试按照这里的建议将json更改为jsonp,但没有成功。

    知道如何解决这个问题吗?

    非常感谢。

  • 共有1个答案

    赵才俊
    2023-03-14

    您的全局属性看起来是错误的。

    我认为你想改变两件事。

    • 您的CORS url应该是您希望允许的应用程序的url(而不是API url),即:2300而不是:2400

    你想要的是:

    var cors = new EnableCorsAttribute("http://srv02:2300", "*", "*");
    config.EnableCors(cors);
    

    这应该指示浏览器(使用选项响应)如果他们想从http://srv02:2300/*对于任何动词或标题,都可以。如果另一个域尝试调用此API,它将不正常。

     类似资料:
    • 我在javascript中使用Reactjs和通过AJAX使用API。我们如何解决这个问题?以前我使用CORS工具,但现在我需要启用CORS。

    • 问题内容: 我打算使用Ajax将跨域请求发送到soap Web服务。Web服务的URL是:http://example1.asmx?op = GetVOD 我的代码: 在IIS 7服务器端,我已经将这些行添加到文件web.config中 当我在Chrome上运行客户端代码时,出现405错误: 有谁知道如何解决这个问题? 预先感谢 问题答案: 听起来像Web DAV正在阻碍。这是删除它的配置: ht

    • 问题内容: 我正在创建一个使用webpack-dev-server和react-router进行开发的应用程序。 似乎webpack-dev-server是建立在以下假设的基础上的:您将在一个位置拥有一个公共入口点(即“ /”),而react- router允许无限数量的入口点。 我想要webpack-dev-server的好处,特别是对生产力非常有用的热重载功能,但是我仍然希望能够加载react

    • 问题内容: 我试图使CORS请求正常工作。使用以下JS代码,我得到此错误: 这是JS代码: 当我使用chrome的devtools查看网络时,我发现确实没有标题。但是,当我手动加载该网站时,它就存在了! 我使用以下代码设置标题: 希望能有所帮助! 问题答案: 它说这意味着您的服务器应用程序需要调整以接受跨源请求。由于安全原因,默认情况下跨源请求不起作用。您需要启用它们。 对于django,有一个维

    • 我在AngularJS中创建了一个应用程序,并尝试调用Laravel API: MyApp(AngularJS):http://localhost:8080/ API(Laravel样板文件):http://localhost:8000/ api_routes.php: