Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用MVC 5在本地主机上使用IISExpress时出现Ajax发布和CORS飞行前错误_Ajax_Asp.net Mvc 5_Cors_Iis Express - Fatal编程技术网

使用MVC 5在本地主机上使用IISExpress时出现Ajax发布和CORS飞行前错误

使用MVC 5在本地主机上使用IISExpress时出现Ajax发布和CORS飞行前错误,ajax,asp.net-mvc-5,cors,iis-express,Ajax,Asp.net Mvc 5,Cors,Iis Express,我正在本地主机上使用Visual Studio和IIS Express测试对外部地址的Ajax请求。(我已经使用Fiddler测试了这个请求,它工作正常!) 当我运行它时,我会在浏览器(Chrome)控制台中看到以下内容: 我用拖网捕鱼,并尝试添加以下内容: <system.webServer> <httpProtocol> <customHeaders> <add name="Access-Contro

我正在本地主机上使用Visual Studio和IIS Express测试对外部地址的Ajax请求。(我已经使用Fiddler测试了这个请求,它工作正常!)

当我运行它时,我会在浏览器(Chrome)控制台中看到以下内容:

我用拖网捕鱼,并尝试添加以下内容:

<system.webServer>  
    <httpProtocol>
      <customHeaders>
        <add name="Access-Control-Allow-Origin" value="*" />
        <add name="Access-Control-Allow-Headers" value="Content-Type" />
        <add name="Access-Control-Allow-Methods" value="GET,PUT,POST,DELETE,HEAD,OPTIONS" />
        <add name="Access-Control-Expose-Headers" value="*" />
        <add name="Access-Control-Request-Headers" value="*" />
        <add name="Access-Control-Request-Method" value="GET,PUT,POST,DELETE,HEAD,OPTIONS" />
        <add name="X-Frame-Options" value="DENY" />
      </customHeaders>
    </httpProtocol>
</system.webServer>  
以下是我在上面尝试过的一些东西:

还有其他建议吗?我的点子快用完了


谢谢

我认为当试图从客户端代码(与服务器端代码相反)调用外部API时,这是一个问题

为了在MVC中解决这个问题,我将ajax请求指向如下的本地操作:

url: '@Url.Action("Action", "Controller")'
然后在action方法中(用[HttpPost]属性修饰),我使用HttpWebRequest成功地向外部API发出请求

 var newDataRequest = $.ajax({
            type: "post",
            url: 'https://api.example.com/',
            crossDomain : true,
            crossOrigin: true,
            headers: {
                "Accept": "application/json",
                "Content-Type":"application/json",
                "Access-Control-Allow-Origin":"https://localhost:44306/",                    
                "Access-Control-Expose-Headers":"*",
                "Access-Control-Request-Headers":"access-control-allow-credentials,access-control-allow-headers,access-control-allow-methods,access-control-allow-origin,access-control-expose-headers,access-control-max-age,content-type,key,x-frame-options",
                "Access-Control-Allow-Methods" : "GET,PUT,POST,DELETE,HEAD,OPTIONS",
                "Access-Control-Allow-Headers" : "Content-Type,Authorization,Accept",
                "Access-Control-Max-Age" : 1728000,
                "Access-Control-Allow-Credentials" : true,
                "X-Frame-Options":"DENY"
            },
            data: {},
            timeout: 60000
            }).done(function (data) {
                
            }).fail(function (jqXHR, textStatus) {
               
            }).always(function (jqXHR, textStatus) {
                stopSpinner();
            });
url: '@Url.Action("Action", "Controller")'