Azure No 'Access-Control-Allow-Origin' 标头

Posted

技术标签:

【中文标题】Azure No \'Access-Control-Allow-Origin\' 标头【英文标题】:Azure No 'Access-Control-Allow-Origin' headerAzure No 'Access-Control-Allow-Origin' 标头 【发布时间】:2019-03-18 17:02:06 【问题描述】:

我有一个托管在 Azure Web 应用程序中的 .NET Core Web 应用程序。它的功能之一是解析 XML 提要服务器端。

直到最近,当通过 C# 调用 RSS 提要时,该逻辑才停止返回数据。通过浏览器访问时,您可以看到 RSS 提要。

问题

该解决方案现在仅适用于本地主机。如果我直接使用 AJAX 调用 RSS 提要,我会收到以下错误:

对预检请求的响应未通过访问控制检查:否 'Access-Control-Allow-Origin' 标头出现在请求的 资源。原点 'http://blah.azurewebsites.net' 因此不是 允许访问。

据我了解,服务器没有在响应中包含标头?

那么这个网站https://codebeautify.org/rssviewer 是如何设法返回 RSS 提要的呢?

Javascript

var data = [
     title: "UK", Url: "http://feeds.bbci.co.uk/news/uk/rss.xml" ,
     title: "World", Url: "http://feeds.bbci.co.uk/news/world/rss.xml" 
];

$.ajax(
    method: "POST",
    contentType: "application/json",
    data: JSON.stringify(data),
    url: "api/xml",
    success: (data) => 
        // do stuff
    
);

C#

public MyResponse Get(List<MyRequest> requests)

    foreach(var request in requests)
    
        request.XDocument = XDocument.Load(request.Url);
    

    return new MyResponse(requests);

【问题讨论】:

您是否在 Azure Web 应用上启用了 CORS? docs.microsoft.com/en-us/azure/app-service/… @softbear 我为什么要这样做?问题不就是我从 RSS 提要(即 BBC)获得的响应吗? “据我了解,服务器没有在响应中包含标头?” ⬅ 是的。 “但是,这个网站codebeautify.org/rssviewer 是如何设法返回 RSS 提要的?” 该站点必须从其后端服务器端代码而不是其前端 javascript 代码发出对该 RSS 提要的请求. 【参考方案1】:

当代码部署到 Azure 时,我的控制器没有收到 POST 数据。不知道为什么,但我可以通过按照本指南 https://docs.microsoft.com/en-us/azure/app-service/web-sites-dotnet-troubleshoot-visual-studio 设置远程调试来看到这一点。

按照本指南操作时,我确实遇到了我的 Visual Studio 2017 社区版无法找到 Internet Explorer 的问题。

基本上,Visual Studio 正在寻找 iexplore.exe,由于某种原因,我没有(可能是因为存在 Edge?)。我正在运行 Windows 10 家庭版,版本 10.0.17134。

计算机\HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\App 路径\IEXPLORE.EXE

为了解决这个问题,我安装了 Internet Explorer 11。

    按 Windows 键 搜索管理可选功能 点击添加功能 查找 Internet Explorer 安装,重启完成安装

我不知道为什么没有收到 POST 数据,但作为临时解决方法,我不需要从 JS 发送数据,因此我同时将数据移动到控制器。

【讨论】:

以上是关于Azure No 'Access-Control-Allow-Origin' 标头的主要内容,如果未能解决你的问题,请参考以下文章

[Doc]MongoDB用户创建与启用access-control

Spring Security(三十):9.5 Access-Control (Authorization) in Spring Security

Azure No 'Access-Control-Allow-Origin' 标头

Xamarin在iPad中构建iOS azure移动直播播放器。 “No Body on Method”,NInterpretException

Android -gradle task -Azure devops - Pipeline No toolchains found in the NDK toolchains folder for A

Azure Devops: COPY failed: stat /var/lib/docker/tmp/docker-builder268095359/xxxxxxx.csproj no such