【发布时间】: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 提要的请求.
标签: javascript c# azure cors cross-domain