Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Tomcat“;“访问控制允许来源”;和JavaScript_Javascript_Http_Tomcat - Fatal编程技术网

Tomcat“;“访问控制允许来源”;和JavaScript

Tomcat“;“访问控制允许来源”;和JavaScript,javascript,http,tomcat,Javascript,Http,Tomcat,我的服务器上的CORS有一个很大的问题。我的服务器正在本地主机上的Tomcat上运行。我实现的服务器有两个RestFul资源。 例如: @Path("user") public class UserService { @GET @Path("/{username}/{password}") @Produces("text/plain") public String checkLoginParameter(@PathParam("username") String username, @PathP

我的服务器上的CORS有一个很大的问题。我的服务器正在本地主机上的Tomcat上运行。我实现的服务器有两个RestFul资源。 例如:

@Path("user")
public class UserService {
@GET
@Path("/{username}/{password}")
@Produces("text/plain")
public String checkLoginParameter(@PathParam("username") String username, @PathParam("password") String password) {
        String tempUserName = "";
        String tempPassword = "";
        String bool = "";

        EntityManager em = createEntityManager();
        try{
            User user = (User)em.createQuery("SELECT u FROM User u WHERE u.username='"+username+"' AND u.password='"+password+"'").getSingleResult();
            tempUserName = user.getUsername();
            tempPassword = user.getPassword();
        }
        catch(Exception e){}

        if(username.equals(tempUserName) && !username.isEmpty() && password.equals(tempPassword) && !password.isEmpty()){
            bool = "true";
        }
        else{
            bool = "false";
        }
        return bool;
   }      
}
资源正在工作。 现在我想通过JavaScript从另一个网站访问Ressource。当我尝试执行此操作时,会收到一条错误消息:

XMLHttpRequest cannot load http://localhost:8080/RSAppStore/user/poc/poc. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access.
我知道我已经向我的服务器添加了CORS的权限。 我是这样做的:

web.xml:

<filter>
<filter-name>CORS</filter-name>
<filter-class>com.thetransactioncompany.cors.CORSFilter</filter-class>
<init-param>
 <param-name>cors.allowOrigin</param-name>
    <param-value>*</param-value>
</init-param>
<init-param>
 <param-name>cors.supportedMethods</param-name>
    <param-value>GET, POST, HEAD, PUT, DELETE</param-value>
</init-param>
<init-param>
<param-name>cors.supportedHeaders</param-name>
<param-value>*</param-value>
</init-param>
<init-param>
    <param-name>cors.exposedHeaders</param-name>
    <param-value>Set-Cookie</param-value>
</init-param>
<init-param>
    <param-name>cors.supportsCredentials</param-name>
    <param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CORS</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

我在互联网上读了很多例子和解释,但似乎什么都不管用,我也不知道我做错了什么。

我刚刚用tomcat和angular.js成功地通过了CORS

您可能需要配置以下内容:

  • 将cors.supportedHeaders更改为:

    <init-param>
        <param-name>cors.supportedHeaders</param-name>
        <param-value>Accept, Origin, X-Requested-With, Content-Type, Last-Modified</param-value>
    </init-param>
    
    contentType: "application/x-www-form-urlencoded; charset=utf-8"
    
  • 试试看,伙计

    <init-param>
        <param-name>cors.supportedHeaders</param-name>
        <param-value>Accept, Origin, X-Requested-With, Content-Type, Last-Modified</param-value>
    </init-param>
    
    contentType: "application/x-www-form-urlencoded; charset=utf-8"