原生js实现jsonp遇到MIME type报错,如何解决?

  1. 描述你的问题
    用原生javascript实现的jsonp方法,后端代码用的是php,在执行的时候,遇到了这样的问题,请问如何解决?

  2. 贴上相关代码

    getJSONP : function(url,callback){
            //为本次请求创建唯一的一个回调函数名称
            var cbnum = "cb" + this.getJSONP.counter++; //
            var cbname = "getJSONP."+cbnum;   //作为JSONP函数的属性
    
            if(url.indexOf("?") === -1){
                url += "?jsonp="+cbname;
            }else{
                url += "&jsonp="+cbname;
            }
            //创建script元素用于发送请求
            var script = document.createElement("script");
    
            //定义将脚本执行的回调函数
            this.getJSONP[cbnum] = function(response){
                //response.ContentType("application/javascript");
                try{
                    callback(response); //处理响应数据
                }
                finally{
                    delete getJSONP[cbnum];    //删除该函数
                    script.parentNode.removeChild(script);  //移除script元素
                }
            };
    
            //立即出发HTTP请求
            script.src = url;
            script.charset = "utf-8";
            script.type = "text/javascript";
    
            document.body.appendChild(script);
        }
  3. 贴上报错信息

    Refused to execute script from 'https://api.github.com/users/xxx?jsonp=getJSONP.cb0' because its MIME type ('application/json') is not executable, and strict MIME type checking is enabled.
  4. 已经尝试过哪些方法仍然没解决(附上相关链接)

解决方法中提到通过设置contentType为application/javascript就好,请问要如何设置呢?

阅读 18.7k
3 个回答

要在你的后端PHP代码中设置,在响应头部设置Content-Typeapplication/javascript

新手上路,请多包涵

@RequestMapping(value="/addGoodsToCartList",produces="application/javascript;charset=utf-8")

public Object addGoodsToCartList(Long itemId,Integer num,String callback){

这样写 在@RequestMapping里面

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题