![](/img/trans.png)
[英]Nodejs Express CORS issue with 'Access-Control-Allow-Origin'
[英]CORS - Access-Control-Allow-Origin issue
我有一个以 RESTful Jersey Api 作为后端的 AngularJS Web 应用程序。 我正在调用这个 API
function Create(user) {
return $http.post('http://localhost:8080/NobelGrid/api/users/create/', user).then(handleSuccess, handleError('Error creating user'));
}
这是 API (POST) 的代码:
/**
* This API create an user
*
* @param data
* @return
*/
@Path("create")
@POST
@Produces("application/json")
public Response create(String data) {
UserDataConnector connector;
JSONObject response = new JSONObject(data);
User userToCreate = new User(response.getString("surname"), response.getString("name"),
response.getString("mail"), response.getString("username"), response.getString("password"), 0);
try {
connector = new UserDataConnector();
connector.createUser(userToCreate);
} catch (IOException e) {
e.printStackTrace();
}
return Response.status(Response.Status.OK) // 200
.entity(userToCreate)
.header("Access-Control-Allow-Origin", "*")
.header("Access-Control-Allow-Headers", "X-Requested-With, Content-Type, X-Codingpedia,Authorization")
.header("Access-Control-Allow-Methods", "GET, POST, DELETE, PUT").build();
}
/**
* CORS compatible OPTIONS response
*
* @return
*/
@Path("/create")
@OPTIONS
public Response createOPT() {
System.out.println("Called OPTION for create API");
return Response.status(Response.Status.OK) // 200
.header("Access-Control-Allow-Origin", "*")
.header("Access-Control-Allow-Headers", "X-Requested-With, Content-Type, X-Codingpedia,Authorization")
.header("Access-Control-Allow-Methods", "GET, POST, DELETE, PUT, OPTIONS").build();
}
我添加了一个用于create
的 OPTION API 以使该 API 与 CORS 兼容。 事实上,API 运行良好,因为在 POST 之前调用了 OPTIONS API,并且在我的数据库中创建了用户。 无论如何在前端,我收到此错误:
XMLHttpRequest 无法加载http://localhost:8080/NobelGrid/api/users/create/ 。 请求的资源上不存在“Access-Control-Allow-Origin”标头。 因此,不允许访问 Origin ' http://localhost:63342 '。 响应的 HTTP 状态代码为 500。
谁能帮帮我吗?
更新:
stack 建议这个问题No Access-Control-Allow-Origin 标头存在于请求的资源上,因为可能重复,但该解决方案对我不起作用,因为 Response Jersey API 中不存在addHeader(String)
。
更新 2
我使用这个解决方案解决了这个问题:
http://www.coderanch.com/t/640189/Web-Services/java/Access-Control-Origin-header-present
但我还有另一个错误。 我会做另一个问题,因为我认为这是一个不同的论点。
提前致谢!
我使用这个解决方案解决了这个问题:
http://www.coderanch.com/t/640189/Web-Services/java/Access-Control-Origin-header-present
但我还有另一个错误。
我会做另一个问题,因为我认为这是一个不同的论点。
使用 CORS NPM 并添加为中间件。
var express = require('express')
var cors = require('cors')
var app = express()
app.use(cors())
app.get('/products/:id', function (req, res, next) {
res.json({msg: 'This is CORS-enabled for all origins!'})
})
app.listen(80, function () {
console.log('CORS-enabled web server listening on port 80')
})
-------------------------在您的 app.js 中添加此行----------------- --------
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET, POST, PATCH, PUT, DELETE, OPTIONS');
header('Access-Control-Allow-Headers: Origin, Content-Type, X-Auth-Token');
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.