是否为Instagram API制定了新的CORS政策?

时间:2019-02-16 23:10:55

标签: cors fetch instagram-api

我在19年2月13日左右突然突然遇到一些代码,原因似乎是Instagram API端点GET / users / self / media / recent上的CORS问题。在02/12/19一切正常,两天后每次都出现CORS问题。

相同的GET请求插入Postman或Chrome浏览器时,不会出现问题,因此,导致CORS问题的请求本身并不是什么错误。我尝试用其他API终结点替换Instagram终结点,并且那里没有问题。从本地主机或网站本身发出请求时,会发生CORS问题。

Access to fetch at
'https://api.instagram.com/v1/users/
self/media/recent/?access_token=MY_ACCESS_TOKEN&count=6' from origin 
'http://localhost:3000' has been blocked by CORS policy: 
Response to preflight request doesn't pass access control check: 
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.

一旦我构建了页面(我正在使用ReactJS)并发布它,我可以期望它在我的访问令牌过期之前可以正常工作。相反,一夜之间出现了CORS问题。我被认为是这是Facebook对他们的Instagram API所做的更改,而不是由于代码问题引起的。

1 个答案:

答案 0 :(得分:0)

这可能很麻烦,但是?__ a = 1仍然有效,但是我使用Java程序来调用Instagram。这是代码示例。


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;

public class Test {
    public static void main(String[] args) {

      try {

        //URL url = new URL("https://api.twitter.com/1.1/search/tweets.json?q=arraylist_thesis&result_type=recent");
        URL url = new URL("https://www.instagram.com/explore/tags/animolasalle/?__a=1");
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        conn.setRequestMethod("GET");
        conn.setRequestProperty("Accept", "application/json");

        if (conn.getResponseCode() != 200) {
            throw new RuntimeException("Failed : HTTP error code : "
                    + conn.getResponseCode());
        }

        BufferedReader br = new BufferedReader(new InputStreamReader(
            (conn.getInputStream())));

        String output;
        System.out.println("Output from Server .... \n");
        while ((output = br.readLine()) != null) {
            System.out.println(output);
        }

        conn.disconnect();

      } catch (MalformedURLException e) {

        e.printStackTrace();

      } catch (IOException e) {

        e.printStackTrace();

      }

    }
}

输出将是这样。 Instagram call in Java Program

我猜想我们将不得不制造自己的REST服务器来调用URL。 我希望这对我有所帮助,因为我今天早上才发现这个问题。