如何解决请求的资源上没有 'Access-Control-Allow-Origin' header
How to solve no 'Access-Control-Allow-Origin' header is present on the requested resource
CORS:
大多数开发人员在从另一个域访问休息服务时都会遇到一个非常普遍的问题,我也是。
我收到此错误:
请求的资源上不存在 'Access-Control-Allow-Origin' header。因此不允许访问来源“http://localhost:8080”。
下面是 jsp 片段。
<html>
<head>
<meta content="text/html; charset=utf-8">
<title>AJAX JSON SAMPLE</title>
<script type="application/javascript">
function load()
{
var url = "https://samplewebapp1.herokuapp.com/rest/json/get";//use any url that have json data
var request;
if(window.XMLHttpRequest){
request=new XMLHttpRequest();//for Chrome, mozilla etc
}
else if(window.ActiveXObject){
request=new ActiveXObject("Microsoft.XMLHTTP");//for IE only
}
request.onreadystatechange = function(){
if (request.readyState == 4 )
{
var jsonObj = JSON.parse(request.responseText);//JSON.parse() returns JSON object
document.getElementById("appName").innerHTML = jsonObj.appName;
document.getElementById("language").innerHTML = jsonObj.language;
}
}
request.open("GET", url, true);
request.send();
}
</script>
</head>
<body>
appName:
<span id="appName"></span>
<br /> language:
<span id="language"></span>
<br />
<button type="button" onclick="load()">Load Information</button>
</body>
</html>
下面是该服务的其余服务实现。
`package com.heroku.rest;
import java.util.Date;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import com.heroku.model.Heroku;
@Path("/json")
public class HerokuRestService {
@GET
@Path("/get")
@Produces(MediaType.APPLICATION_JSON)
public Heroku getTrackInJSON() {
return new Heroku("My First Heroku", "Java", new Date().toString());
} }`
我错过了什么?
您正在尝试对其他域执行 XmlHttpRequest。您可以简单地使用 CORS 告诉您的浏览器允许它。 (由于某些安全原因,它完全是特定于浏览器的)。
https://chrome.google.com/webstore/detail/allow-control-allow-origi/nlfbmbojpeacfghkpbjhddihlkkiljbi?hl=en-US 使用此扩展程序允许访问任何 'access-control-allow-origin' header 请求。
或者,您也可以手动配置 CORS。就像这里描述的那样 https://www.html5rocks.com/en/tutorials/cors/
CORS: 大多数开发人员在从另一个域访问休息服务时都会遇到一个非常普遍的问题,我也是。
我收到此错误:
请求的资源上不存在 'Access-Control-Allow-Origin' header。因此不允许访问来源“http://localhost:8080”。
下面是 jsp 片段。
<html>
<head>
<meta content="text/html; charset=utf-8">
<title>AJAX JSON SAMPLE</title>
<script type="application/javascript">
function load()
{
var url = "https://samplewebapp1.herokuapp.com/rest/json/get";//use any url that have json data
var request;
if(window.XMLHttpRequest){
request=new XMLHttpRequest();//for Chrome, mozilla etc
}
else if(window.ActiveXObject){
request=new ActiveXObject("Microsoft.XMLHTTP");//for IE only
}
request.onreadystatechange = function(){
if (request.readyState == 4 )
{
var jsonObj = JSON.parse(request.responseText);//JSON.parse() returns JSON object
document.getElementById("appName").innerHTML = jsonObj.appName;
document.getElementById("language").innerHTML = jsonObj.language;
}
}
request.open("GET", url, true);
request.send();
}
</script>
</head>
<body>
appName:
<span id="appName"></span>
<br /> language:
<span id="language"></span>
<br />
<button type="button" onclick="load()">Load Information</button>
</body>
</html>
下面是该服务的其余服务实现。
`package com.heroku.rest;
import java.util.Date;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import com.heroku.model.Heroku;
@Path("/json")
public class HerokuRestService {
@GET
@Path("/get")
@Produces(MediaType.APPLICATION_JSON)
public Heroku getTrackInJSON() {
return new Heroku("My First Heroku", "Java", new Date().toString());
} }`
我错过了什么?
您正在尝试对其他域执行 XmlHttpRequest。您可以简单地使用 CORS 告诉您的浏览器允许它。 (由于某些安全原因,它完全是特定于浏览器的)。
https://chrome.google.com/webstore/detail/allow-control-allow-origi/nlfbmbojpeacfghkpbjhddihlkkiljbi?hl=en-US 使用此扩展程序允许访问任何 'access-control-allow-origin' header 请求。
或者,您也可以手动配置 CORS。就像这里描述的那样 https://www.html5rocks.com/en/tutorials/cors/