显然,我完全误解了它的语义.我想到了这样的事情:
好吧,我错了.它根本不起作用.所以,我已经阅读了跨源资源共享,并尝试在w3c推荐中阅读跨源资源共享
有一件事是肯定的 - 我仍然不明白我应该如何使用这个标题.
我完全控制了站点A和站点B.如何启用从站点A下载的javascript代码以使用此标头访问站点B上的资源?
PS
我不想使用JSONP.
我正在尝试设置AngularJS与跨源资源进行通信,其中传递我的模板文件的资产主机位于不同的域上,因此角度执行的XHR请求必须是跨域的.我已经为我的服务器添加了适当的CORS标头,以便使其工作,但它似乎不起作用.问题是,当我在浏览器(chrome)中检查HTTP请求时,发送到资产文件的请求是OPTIONS请求(它应该是GET请求).
我不确定这是AngularJS中的错误还是我需要配置一些东西.根据我的理解,XHR包装器无法发出OPTIONS HTTP请求,因此看起来浏览器正在试图确定在执行GET请求之前是否"允许"首先下载资产.如果是这种情况,那么我是否还需要使用资产主机设置CORS标头(Access-Control-Allow-Origin:http://asset.host ..)?
我在我的Web应用程序中集成spring security(即登录部分)时遇到了一些麻烦.我的BackEnd在localhost:8080上运行,FrontEnd(Ionic 2与AngularJS 2)在localhost:8100上运行.我设法登录(至少我是这么认为),但其他请求变得不可用,我在Chrome开发者控制台中收到以下错误:
XMLHttpRequest cannot load http://localhost:8080/company/getAll. Response for preflight is invalid (redirect)
Run Code Online (Sandbox Code Playgroud)
当使用Postman进行测试时,它似乎正在工作,我登录然后我能够在http:// localhost:8080/company/getAll上执行POST请求,一切都按预期工作.
据推测,我错过了某些东西(比如令牌)但却无法弄清楚是什么.我是Ionic和Spring Security的新手,所以请原谅我,如果这是微不足道的话.我尝试使用谷歌搜索各种教程,但无法找到任何东西(大多数都使用JSP).
我怎么能让这个工作?我的前端请求应该怎么样?
这是我从BackEnd控制器登录的方法:
@RequestMapping(value = "/login", method = RequestMethod.GET)
@CrossOrigin(origins = "*")
public ResponseEntity<GeneralResponse> login(Model model, String error, String logout) {
System.out.println("LOGIN"+model.toString());
if (error != null) {
System.out.println("1.IF");
model.addAttribute("error", "Your username and password is invalid.");
}
if (logout != null) {
System.out.println("2.IF");
model.addAttribute("message", "You have been logged out successfully.");
}
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(new GeneralResponse(true, "FAILURE: Error"));
}
Run Code Online (Sandbox Code Playgroud)
这是我的WebSecurityConfig: …
我使用fetch来调用post服务,我收到错误Fetch API cannot load http://localhost:8080/user/login.预检的响应无效(重定向)'.Status code: 302 Found.变量'data'是一个jsonobject {email: "batman@dc.com", password: "111"}
fetch('http://localhost:8080/user/login', {
method: 'post',
body : JSON.stringify(data),
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
dataType : 'json'
})
Run Code Online (Sandbox Code Playgroud)