我使用NodeJs + HapiJs V17开发了REST WebServices,我与Angular 6集成在一起,当我开始执行POST / PUT请求时遇到了CORS的麻烦 我在本地主机和端口4000上部署了HapiJS应用程序,并使用Angular Cli运行Angular 6代码。
从Chrome浏览器执行此操作时,出现以下错误:
从原点“ http://localhost:4000/api/v1/authenticateUser”到“ http://localhost:4200”处对XMLHttpRequest的访问已被CORS策略阻止:对预检请求的响应未通过访问控制检查:否'Access-Control-Allow-来源的标头出现在请求的资源上。
我在Hapi Server的标头部分尝试了各种选项
Hapi服务器代码
const server = new Hapi.Server({
port: 4000, routes: {
cors: {
origin: ['*'],
headers: ["Accept", "Authorization", "Content-Type", "If-None-Match", "Accept-language"]
}
}
});
角度6
public login(payload: TokenPayload): Observable<ServiceResponse> {
return this.http.post<ServiceResponse>(`${environment.apiUrl}/authenticateUser`, payload)
.pipe(map(response => {
if (response.data) this.saveUser(response.data);
return response;
}));
}
我搜索了很多帖子,尝试了很多事情,但是没有运气。 如果有人遇到此问题并已解决,请向我发布解决方案。 这阻止了我的产品发布。
这不是以下链接的重复帖子: hapi.js Cors Pre-flight not returning Access-Control-Allow-Origin header
在上面的链接中,这是Hapi V16的问题。 但是我在HapiJS V17中遇到了这个问题。
我找到了解决方法:
使用hapi-cors插件,请参见下面的示例代码。
await server.register({
plugin: require('hapi-cors'),
options: {
origins: ['*'],
allowCredentials: 'true',
exposeHeaders: ['content-type', 'content-length'],
maxAge: 600,
methods: ['GET, HEAD, PUT, PATCH, POST, DELETE, OPTIONS'],
headers: ['Accept', 'Content-Type', 'Authorization'] // add your header params
},
checkOrigin: true
});
await server.start();`
答案 0 :(得分:0)
您是否尝试过import configparser
from io import StringIO
import datetime
def update_tmstmp_value(config_string):
fo = StringIO(config_string)
data = ''
for line in fo.readlines():
if line.startswith('tmstmp'):
key, tmstmp_str = line.strip().split('=')
try:
value = datetime.datetime.now().strftime(tmstmp_str)
except ValueError:
value = datetime.datetime.now().strftime('%Y%m%d')
data += key + '=' + value + '\n'
else:
data += line
return data
config_data = """
[DEFAULT]
tmstmp=%Y%m%d
type=REPLACE_ME_%(tmstmp)s
[section1]
item1=val1_%(type)s
item2=val2
[section2]
item3=val3_%(type)s
item4=val4
"""
config = configparser.ConfigParser()
modified_config_data = update_tmstmp_value(config_data)
config.read_string(modified_config_data)
print(config.items('section1'))
标志?
[('tmstmp', '20190402'), ('type', 'REPLACE_ME_20190402'), ('item1', 'val1_REPLACE_ME_20190402'), ('item2', 'val2')]