Angular CORS飞行前响应为405(方法不允许)错误

Angular CORS飞行前响应为405(方法不允许)错误,angular,cors,foursquare,angular-http,http-status-code-405,Angular,Cors,Foursquare,Angular Http,Http Status Code 405,我正在尝试从我的angular web应用程序上传foursquare用户的个人资料照片。我正在使用“用户/更新”端点- 这是我的模板 <input type="file" (change)="fileChange($event)" placeholder="Upload file"> 我收到405(不允许使用方法)并且飞行前的响应在控制台中有无效的HTTP状态代码405错误。您可能希望从前端JavaScript代码中删除以下内容开始: headers.append("Acces

我正在尝试从我的angular web应用程序上传foursquare用户的个人资料照片。我正在使用“用户/更新”端点-

这是我的模板

<input type="file" (change)="fileChange($event)" placeholder="Upload file">

我收到405(不允许使用方法)并且飞行前的响应在控制台中有无效的HTTP状态代码405错误。

您可能希望从前端JavaScript代码中删除以下内容开始:

headers.append("Access-Control-Allow-Origin","true")
Access Control Allow Origin
是服务器发送的响应头;将其添加为请求头的唯一效果是触发一个将失败的请求

您现在看到的情况是,由于您的代码添加了
accesscontrolalloworigin
作为请求头,您的浏览器正在发送一个请求;对于浏览器来说,考虑飞行前的成功,<代码>https://api.foursquare.com/v2/users/self/update端点必须使用200 OK或204状态代码响应
选项
请求

但您得到的405“(不允许使用方法)”响应表明Foursquare API端点未配置为处理
选项
请求。因此,飞行前会失败,您的浏览器永远不会继续执行
POST
请求它试图发送的代码


但是,对来自该Foursquare API端点的非
选项
请求的响应包括
访问控制允许源
响应头。因此,只要您没有从客户端添加
访问控制允许源代码,只要请求没有其他特征会触发浏览器进行预飞行,问题中的代码就应该按预期工作。

如果部署后IIS上出现此问题,我建议您在Web.config内部标记中添加以下内容:

<modules>
    <remove name="WebDAVModule" />
</modules>

<modules>
    <remove name="WebDAVModule" />
</modules>