157

Jquery AJAX を使用してサードパーティ API を呼び出しました。コンソールに次のエラーが表示されます。

Cross-Origin Read Blocking (CORB) は、MIME タイプが application/jsonのクロスオリジン応答MY URLをブロックしました。詳細については、 https://www.chromestatus.com/feature/5629709824032768を参照してください。

Ajax 呼び出しに次のコードを使用しました。

$.ajax({
  type: 'GET',
  url: My Url,
  contentType: 'application/json',
  dataType:'jsonp',
  responseType:'application/json',
  xhrFields: {
    withCredentials: false
  },
  headers: {
    'Access-Control-Allow-Credentials' : true,
    'Access-Control-Allow-Origin':'*',
    'Access-Control-Allow-Methods':'GET',
    'Access-Control-Allow-Headers':'application/json',
  },
  success: function(data) {
    console.log(data);
  },
  error: function(error) {
    console.log("FAIL....=================");
  }
});

Fiddler をチェックインすると、データは返されましたが、Ajax 成功メソッドでは返されませんでした。

私を助けてください。

4

15 に答える 15

14

ヘッダー 'Access-Control-Allow-Origin:*' を含む応答を返します PHP サーバーの応答については、以下のコードを確認してください。

<?php header('Access-Control-Allow-Origin: *');
header('Content-Type: application/json');
echo json_encode($phparray); 
于 2019-02-19T09:16:28.547 に答える
3

Chrome拡張機能では、使用できます

chrome.webRequest.onHeadersReceived.addListener

サーバーの応答ヘッダーを書き換えます。既存のヘッダーを置き換えるか、追加のヘッダーを追加できます。これはあなたが望むヘッダーです:

Access-Control-Allow-Origin: *

https://developers.chrome.com/extensions/webRequest#event-onHeadersReceived

私はCORBの問題で立ち往生していましたが、これで修正されました。

于 2019-11-17T23:57:44.660 に答える
0

同様の問題があります。私の場合は、サーバー応答の contentType が text/javascript ではなく application/json であるためです。

だから、私は自分のサーバー(Spring MVC)からそれを解決します:

// http://127.0.0.1:8080/jsonp/test?callback=json_123456
    @GetMapping(value = "/test")
    public void testJsonp(HttpServletRequest httpServletRequest,
                          HttpServletResponse httpServletResponse,
                          @RequestParam(value = "callback", required = false) String callback) throws IOException {
        JSONObject json = new JSONObject();
        json.put("a", 1);
        json.put("b", "test");
        String dataString = json.toJSONString();

        if (StringUtils.isBlank(callback)) {
            httpServletResponse.setContentType("application/json; charset=UTF-8");
            httpServletResponse.getWriter().print(dataString);
        } else {
            // important: contentType must be text/javascript
            httpServletResponse.setContentType("text/javascript; charset=UTF-8");
            dataString = callback + "(" + dataString + ")";
            httpServletResponse.getWriter().print(dataString);
        }
    }

于 2021-03-05T09:12:43.070 に答える