【发布时间】:2016-07-23 22:13:07
【问题描述】:
我正在尝试将文件内容的字节数组从 angular 发送到其余 api。但我正在禁止 Http 403。我没有启用任何安全性。我不确定我做错了什么。我尝试了几种不同的 MIME 类型。以下是来自 angular js 的 http 帖子, $scope.encoded_file 包含字节数组中的文件。
$http({
method:'POST',
url:'http://localhost:9200/docupload',
data:{'content':$scope.encoded_file,'name':'test','type':'pdf'},
headers:{'Content-Type':'application/octet-stream'}
}).success(function(){});
};
DocUploadService
@RestController
public class DocUploadService {
@RequestMapping(value="/docupload",method={RequestMethod.GET,RequestMethod.POST},consumes="application/octet-stream")
public String UploadDocuments(@RequestParam(value="content")byte[] content,@RequestParam(value="type") String type,@RequestParam(value="name") String name) throws IOException
{
System.out.println("****Inside DocUpload*****");}}
请求当然没有到达服务,我不知道为什么会收到 403。有什么想法吗?
在服务方法之前添加了@CrossOrigin,但仍然没有运气
以下是否将 CrossOrigin 添加到控制器方法中。
public class DocUploadService {
@CrossOrigin(origins = "http://localhost:9200")
@RequestMapping(value="/docupload",method={RequestMethod.GET,RequestMethod.POST,RequestMethod.OPTIONS,RequestMethod.PUT},consumes="application/octet-stream")
另外,添加了全球 CORS 注册表。
@EnableWebMvc
public class WebMVCconfig extends WebMvcConfigurerAdapter {
@Override
public void addCorsMappings(CorsRegistry registry) {
// TODO Auto-generated method stub
registry.addMapping("/docupload")
.allowedOrigins("http://localhost:9200")
.allowedMethods("POST", "GET","OPTION","PUT");
super.addCorsMappings(registry);
}
【问题讨论】:
-
这可能是 CORS 问题。您还有其他实际工作的控制器吗?
-
尝试检查请求(例如使用 chrome firebug)以查看是否有任何 CORS 错误
-
应该是CORS。但我不知道如何解决。请检查帖子的编辑部分。我添加了请求标头。
-
看我的回答,我认为这会有所帮助