Javascript 否';访问控制允许原点';。我们应该如何解决?

Javascript 否';访问控制允许原点';。我们应该如何解决?,javascript,java,ajax,api,Javascript,Java,Ajax,Api,我想使用JSONP 我在编写这样的代码时遇到了以下错误: 请求的资源上不存在“Access Control Allow Origin”标头。 因此,不允许访问源“” 有什么问题 function getAirLine(from , to , date) { var href = "https://api.flightstats.com/flex/schedules/rest/v1/json/from/"+from+"/to/"+to+"/departing/"+date+"?appId=[my

我想使用JSONP

我在编写这样的代码时遇到了以下错误:

请求的资源上不存在“Access Control Allow Origin”标头。 因此,不允许访问源“”

有什么问题

function getAirLine(from , to , date) {

var href = "https://api.flightstats.com/flex/schedules/rest/v1/json/from/"+from+"/to/"+to+"/departing/"+date+"?appId=[myKey1]&appKey=[myKey2]&extendedOptions=languageCode:ko";
$.ajax({
        url : href,
        dataType: 'jsonp',
        success : function(datas) {
            console.log(datas);
            var dataSet = [];

            for (var i = 0; i < datas.scheduledFlights.length; i++) {
                for(var j = 0 ; j < datas.appendix.airlines.length ; j++){
                    if(datas.scheduledFlights[i].carrierFsCode == datas.appendix.airlines[j].fs){
                        airlines = datas.appendix.airlines[j].name;
                    }
                } 
                var dataArr = [];
                dataArr.push(datas.scheduledFlights[i].departureAirportFsCode);
                dataArr.push(datas.scheduledFlights[i].departureTime.substring(11,16))
                dataArr.push(datas.scheduledFlights[i].arrivalAirportFsCode)
                dataArr.push(datas.scheduledFlights[i].arrivalTime.substring(11,16))
                dataArr.push(datas.scheduledFlights[i].carrierFsCode + datas.scheduledFlights[i].flightNumber)
                dataArr.push(airlines);
                dataSet.push(dataArr);
            }
            console.log(dataSet);
            $('#realTime').DataTable({
                destroy: true,
                data: dataSet,
                columns: [
                    { title: "From" },
                    { title: "Depart.Time" },
                    { title: "To" },
                    { title: "Arrial.Time" },
                    { title: "AirLine" },
                    { title: "AirCode" }
                ]
            });                 
        },
        error: function(datas) {
              console.log('실패 - ', datas);
            }
    });
}
函数getAirLine(从,到,日期){ var href=”https://api.flightstats.com/flex/schedules/rest/v1/json/from/“+from+/to/“+to+/Desting/“+date+”?appId=[myKey1]&appKey=[myKey2]&extendedOptions=languageCode:ko”; $.ajax({ url:href, 数据类型:“jsonp”, 成功:功能(数据){ 控制台日志(数据); var数据集=[]; 对于(变量i=0;i
我们应该如何解决呢?

您必须在头文件中启用CORS,使用PHP、JAVA、C#等语言 php中的示例

header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept');
header('Access-Control-Allow-Methods: GET, POST, PUT');
或者只使用JS。Idk它是如何工作的:D 这是一种有价值的方法 范例


我在codepen中有一个例子

我很惊讶你在请求JSONP时会出现CORS错误-这毫无意义,因为JSONP永远不会导致CORS错误。上次发布此代码时,你声称会出现语法错误-你做了什么更改?跨源请求需要远程服务器的同意,通过主动支持JSON-P(涉及修改的响应)或CORS(涉及修改的头)。如果您试图访问的API没有提供这些,则无法直接从客户端发出请求。您的开场白
I want to use jsonp
表明您不理解前面问题中的注释。JSONP是服务器必须支持的东西。JSONP并不是因为您想绕过CORS,而是API如何帮助您绕过CORS,因为他们不知道或不想启用CORS,但仍然希望允许来自客户端的连接。最简单的解决方案是通过您的服务器代理请求,从而避免CORS,并按预期使用API。我不认为OP拥有
flightstats.com
域,因此启用CORS不是一个选项。任何地方都可以通过作为实际请求的代理并在响应中包含CORS响应头来工作-这可以工作,但是,根据API的不同,它的成功可能有限——我知道我编写的任何不允许CORS的API也会阻止这种恶作剧——如果我不想通过客户端直接访问我的API,我会积极阻止它
const CORS = "https://cors-anywhere.herokuapp.com/";
const endpoint = CORS + "https://api.deezer.com/playlist/3314523926/tracks";