【问题标题】:Origin is not allowed by Access-Control-Allow-OriginAccess-Control-Allow-Origin 不允许来源
【发布时间】:2011-10-27 09:45:04
【问题描述】:

我不断收到此错误

1资源解释为脚本,但以 MIME 类型 application/json 传输。

我正在尝试使用 jquery 查询从一个单独域上的 php 文件中获取我的 json,这是我的 php 代码。

json.php

<?php
header('Content-type: application/json');
$arr = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5);
echo json_encode($arr);
?>

这是我的 jquery

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js" type="text/javascript"></script> 
<script type="text/javascript">

$(document).ready(function() {

    var surl =  "http://dropp.users35.interdns.co.uk/json.php";

         $.getJSON(surl,  function(rtndata) {
             console.log(rtndata);
    });

 });


</script>

好的,如果我将我的网址更改为

http://dropp.users35.interdns.co.uk/json.php?callback=?

然后我得到这个错误??????

1Resource interpreted as Script but transferred with MIME type application/json.

【问题讨论】:

标签: jquery json


【解决方案1】:

我相信您的问题的答案涉及使用 JSONP,因为它涉及跨域脚本...

在 StackOverflow 上的几个类似问题中对此进行了讨论: Resource interpreted as script but transferred with MIME type application/json. & parsererror

这里: https://stackoverflow.com/questions/267546/correct-http-header-for-json-file

【讨论】:

    【解决方案2】:

    无论我是否指定callback=,返回的javascript中都没有回调:

    $ curl -v http://dropp.users35.interdns.co.uk/json.php?callback=test_callback
    * About to connect() to dropp.users35.interdns.co.uk port 80 (#0)
    *   Trying 83.170.124.37... connected
    * Connected to dropp.users35.interdns.co.uk (83.170.124.37) port 80 (#0)
    > GET /json.php?callback=test_callback HTTP/1.1
    > User-Agent: curl/7.21.3 (x86_64-pc-linux-gnu) libcurl/7.21.3
    > Host: dropp.users35.interdns.co.uk
    > Accept: */*
    > 
    < HTTP/1.1 200 OK
    < Date: Tue, 16 Aug 2011 03:04:35 GMT
    < Server: Apache
    < X-Powered-By: PHP/5.3.2-1ubuntu4.9
    < Transfer-Encoding: chunked
    < Content-Type: application/json
    < 
    * Connection #0 to host dropp.users35.interdns.co.uk left intact
    * Closing connection #0
    {"a":1,"b":2,"c":3,"d":4,"e":5}
    

    如果你想让它工作,你必须用回调包装你的 JSON:

        test_callback({"a":1,"b":2,"c":3,"d":4,"e":5});
    

    【讨论】:

      猜你喜欢
      • 2013-02-05
      • 1970-01-01
      • 2021-10-09
      • 2013-04-09
      相关资源
      最近更新 更多