【问题标题】:Axios and Fetch both result in CORS error but Postman doesn'tAxios 和 Fetch 都会导致 CORS 错误,但 Postman 不会
【发布时间】:2019-01-03 03:17:03
【问题描述】:

如果我使用 Axios 或 Fetch 向此公共端点发出 ajax 请求:

http://api.flickr.com/services/feeds/photos_public.gne?format=json

我收到以下错误:

Access to fetch at 'http://api.flickr.com/services/feeds/photos_public.gne?format=json' from origin 'http://localhost:3000' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled.

但是,如果我使用 Postman 发出相同的请求,我可以看到结果很好。如何解决这个问题?

【问题讨论】:

  • CORS 是默认情况下在浏览器上强制执行的一项功能 - 可以禁用,但不应禁用。 Postman 不是浏览器,没有这样的限制。

标签: javascript ajax api fetch axios


【解决方案1】:

这不是邮递员与 axios 或 fetch 的问题。问题是服务器返回的是 jsonp 而不是 json。 Axios 和 Fetch 都不支持 jsonp。

为什么不在这里使用 ajax?

$(document).ready(function() {
    $.ajax({
        url: 'http://api.flickr.com/services/feeds/photos_public.gne?format=json',
        dataType: 'jsonp',
        jsonpCallback: 'jsonFlickrFeed'
    });
    window.jsonFlickrFeed = function(response) {
    	console.log(response)
    }
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

【讨论】:

    猜你喜欢
    • 2021-07-02
    • 1970-01-01
    • 2018-07-20
    • 1970-01-01
    • 2019-11-10
    • 1970-01-01
    • 1970-01-01
    • 2020-03-08
    • 2018-10-24
    相关资源
    最近更新 更多