首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >CORS已启用,但当POSTing JSON时,印前检查的响应具有无效的HTTP状态代码404

CORS已启用,但当POSTing JSON时,印前检查的响应具有无效的HTTP状态代码404
EN

Stack Overflow用户
提问于 2016-03-28 16:50:17
回答 5查看 68.6K关注 0票数 22

我已经彻底地搜索过了,但在我的特殊情况下找不到解决这个问题的方法。

使用Fiddler (POST)的跨域服务调用正确执行并接收数据。然而,通过浏览器(Chrome),我得到了消息‘印前检查有无效的HTTP状态代码404’。

我有一个Web API应用程序,并安装了CORS,并确保在web.config文件中存在以下内容:

代码语言:javascript
复制
<system.webServer>
    <handlers>
      <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
      <remove name="OPTIONSVerbHandler" />
      <remove name="TRACEVerbHandler" />
      <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
    </handlers>
    <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, POST, PUT, DELETE, OPTIONS" />
      </customHeaders>
    </httpProtocol>
</system.webServer>

下面是Ajax调用:

代码语言:javascript
复制
var secretKey = 'difusod7899sdfiertwe08wepifdfsodifyosey',
    url = 'http://api.intrinsic.co.uk/api/v1/PTS/ActiveDrivers?api_key=098werolllfWnCbPGAuIXVOJidDHRfYcgxImMlxTXopuekXrSOqOWzEAIdeNTWGPQPpyHxgVGsFysGFKPzq';

  jQuery.ajax ({
      url: url,
      type: "POST",
      data: JSON.stringify({ secretKey: secretKey}),
      dataType: "json",
      contentType: "application/json; charset=utf-8",
      success: function(data){
          var content = "<table class=\"container\"><thead><tr><th>Driver Number</th><th>Timestamp</th><th>VRN</th><th>Latitude</th><th>Longitude</th><th>Track Link</th></tr></thead><tbody>";
          $.each(data.ActiveDrivers.DriverLocationStatus, function (index, element) {
              content += "<tr><td>" + element.DriverNumber + "</td>";
              content += "<td>" + dateFormat(element.Timestamp, "d/m/yy") + " " + dateFormat(element.Timestamp, "h:MM TT") + "</td>";
              content += "<td>" + element.VRN + "</td>";
              content += "<td>" + element.CurrentLatitude + "</td>";
              content += "<td>" + element.CurrentLongitude + "</td>";
              content += "<td><a href=\"https://www.google.co.uk/maps/place//@" + element.CurrentLatitude + "," + element.CurrentLongitude + ",15z/\" target='_blank'>Track &raquo;</a></td></tr>";
          });
          content += "</tbody></table>";
          $( "#result" ).html( content );
      }
  });

显然,在相同的域上完美地工作,正如前面提到的,它使用Fiddler工作。

我确定这是浏览器的印前检查选项检查失败的内容类型的'application/json‘,但我不确定如何修复它。

web.config文件中是否缺少我应该添加的内容?

我已经尝试删除“content-type”,但没有任何影响。

我曾希望this article能解决这个问题(它看起来很有希望),但遇到了同样的错误:

代码语言:javascript
复制
XMLHttpRequest cannot load [URL]. Response for preflight has invalid HTTP status code 404
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36258959

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档