我正在尝试向Tomcat 8.5发出发布请求。
它具有以下CORS配置:
<filter>
<filter-name>CorsFilter</filter-name>
<filter-class>org.apache.catalina.filters.CorsFilter</filter-class>
<init-param>
<param-name>cors.allowed.origins</param-name>
<param-value>ionic://localhost,http://localhost</param-value>
</init-param>
<init-param>
<param-name>cors.allowed.methods</param-name>
<param-value>GET,POST,HEAD,OPTIONS,PUT</param-value>
</init-param>
<init-param>
<param-name>cors.allowed.headers</param-name>
<param-value>Content-Type,X-Requested-With,accept,Origin,Access-Control-Request-Method,Access-Control-Request-Headers</param-value>
</init-param>
<init-param>
<param-name>cors.exposed.headers</param-name>
<param-value>Access-Control-Allow-Origin,Access-Control-Allow-Credentials</param-value>
</init-param>
<init-param>
<param-name>cors.support.credentials</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>cors.preflight.maxage</param-name>
<param-value>10</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CorsFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
这是我的有角度的httpclient(5.2.11)请求:
this.http.post(url, xml, {
withCredentials: true,
responseType: 'text',
headers: headers,
observe: 'response'
})
.toPromise()
.then(response => {
console.warn('RAW');
console.warn(JSON.stringify(response));
})
请求角度HTTP标头对象打印:
{"Content-Type":"text/xml; charset=utf-8","SOAPAction":"\"\"","Cache-control":"no-cache"}
Chrome检查器显示此信息:
General:
Request URL: myurl
Request Method: OPTIONS
Status Code: 403
Remote Address: ip
Referrer Policy: no-referrer-when-downgrade
Response Headers:
Connection: keep-alive
Content-Length: 0
Content-Type: text/plain
Date: Wed, 15 Jul 2020 13:17:45 GMT
Keep-Alive: timeout=60
Server: -
Request Headers:
Accept: */*
Accept-Encoding: gzip, deflate
Accept-Language: es-ES,es;q=0.9,pl-SP;q=0.8,pl;q=0.7,en-US;q=0.6,en;q=0.5
Access-Control-Request-Headers: cache-control,content-type,soapaction
Access-Control-Request-Method: POST
Cache-Control: no-cache
Connection: keep-alive
Host: myurl
Origin: http://localhost
Pragma: no-cache
Referer: http://localhost/
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: cross-site
User-Agent: Mozilla/5.0 (Linux; Android 9; SM-J530F Build/PPR1.180610.011; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/83.0.4103.106 Mobile Safari/537.36
X-Requested-With: bundleid
响应错误是这样的:
从源“ http:// localhost”访问“ myurl”处的XMLHttpRequest具有 被CORS政策封锁:未对预检请求做出回应 通过访问控制检查:没有“ Access-Control-Allow-Origin”标头 出现在请求的资源上。
更多数据:
Ionic framework 3
cordova-android 8.1.0
cordova-plugin-ionic-webview: 4.2.1
angular httpclient 5.2.11
app tested into Samsung android 9 device
为什么如果将cors域设置为tomcat,由于cors块而仍然无法连接到我的服务?