我有一个 AngularJS 应用程序,我需要将数据发布到第三方 URL,该 URL 用于在第三方服务器上存储一些数据。运行下面的代码时出现以下错误: XMLHttpRequest 无法加载http://thirdparty.url.com/。对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,不允许访问Origin ' http://localhost:51491 '。
我在我的 AngularJS 工厂中运行的代码是:
return $http({
url: '//thirdparty.url.com',
method: "POST",
data: params_string,
headers: {
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Methods': 'POST, GET, OPTIONS, PUT',
'Access-Control-Allow-Headers': 'Origin, X-Requested-With, Content-Type, Accept'
}
});
Run Code Online (Sandbox Code Playgroud) 使用 AngularJS 1.2.16 和 Scala Play 2.2.0,我正在尝试启用 CORS。
这是我在前端的请求。基本上它是一个POST发送带有userName和password字段的JSON 。
Request URL:http://localhost:9000/login
Request Headers CAUTION: Provisional headers are shown.
Accept:application/json, text/plain, */*
Content-Type:application/json;charset=UTF-8
Origin:http://localhost:8000
Referer:http://localhost:8000/app.html
User-Agent:Mozilla/5.0 ...
Request Payloadview source
{userName:foo, password:bar}
Run Code Online (Sandbox Code Playgroud)
这checkPreFlight是允许我的POST请求标头的后端方法。
def checkPreFlight = Action {
Ok("...").withHeaders(
ACCESS_CONTROL_ALLOW_ORIGIN -> "*",
ACCESS_CONTROL_ALLOW_METHODS -> "POST",
ACCESS_CONTROL_MAX_AGE -> "300",
ACCESS_CONTROL_ALLOW_HEADERS -> "Origin, X-Requested-With, Content-Type, Accept,
Referer, User-Agent")
}
Run Code Online (Sandbox Code Playgroud)
routes:
POST /login controllers.Home.login
OPTIONS /login controllers.Home.checkPreFlight
Run Code Online (Sandbox Code Playgroud)
我的 Chrome 浏览器的控制台显示:
XMLHttpRequest cannot …Run Code Online (Sandbox Code Playgroud)