fetch(或AJAX Get)返回html,但Postman从feedburner返回xml

时间:2019-05-19 02:00:25

标签: javascript ajax xml rss podcast

我正在尝试在我的应用程序中检索xml播客feed。我遇到了一个问题,其中我发出的一个getUserLocation请求返回了一个html文档而不是xml feed。奇怪的是,如果我将// inside didFinishLaunchingWithOptions UNUserNotificationCenter.current().requestAuthorization(options: [.badge, .alert, .sound]) { (granted, error) in if granted { // this is the use case of the function I am trying to write LocationManager.shared.getLocation(completion: { location in // fetches the country from given location using reverse geo-coding LocationManager.shared.fetchCountry(from: location, completion: { country in if country == "United States" { let notification = LocalNotification() notificationManager.schedule(notification: notification) } }) }) } } 发送到与Postman相同的URL,它将返回rss feed。它似乎也可以与SO上的代码段一起使用(下面的示例)。

可以在this fiddle上看到返回html文档的示例,其代码与下面的代码段完全相同。

请问有人能够帮助我了解为什么会这样吗?我想通过设置某种请求标头来解决它,也许是这样吗?

更新 奇怪的是,看起来好像链接的小提琴有时会获取xml。我认为是因为它缓存了电话。如果您在新的隐身窗口中打开它,它将再次获取html。

fetch
/GET

2 个答案:

答案 0 :(得分:1)

好的,所以我终于可以通过在ReferrerPolicy调用中将no-referrer设置为fetch()来解决此问题。我不是100%知道为什么这行得通,除了这是收费烧录特定的事情之外,他们已经基于引荐来源网址类型制定了有条件的退货政策。

答案 1 :(得分:1)

TL; DR :在网址中传递format作为参数。

https://feeds.feedburner.com/codinghorror?format=html


Feedburner默认返回原始XML:

HTTP/1.1 200 OK
Alt-Svc: quic=":443"; ma=2592000; v="46,43,39"
Cache-Control: private, max-age=0
Content-Encoding: gzip
Content-Type: text/xml; charset=UTF-8

但是它还会发送一个样式表,以便浏览器可以应用样式标记(查看源代码)。

以前,使用了不推荐使用的fmt参数,现在使用format可以要求输入htmlxml

https://feeds.feedburner.com/codinghorror?format=html

HTTP/1.1 200 OK
Alt-Svc: quic=":443"; ma=2592000; v="46,43,39"
Cache-Control: private, max-age=0
Content-Encoding: gzip
Content-Type: text/html; charset=UTF-8